সমস্যা বিবরণ
Nটি গ্লাস আছে যাতে পানি, এবং তাদের ক্যাপাসিটির লিস্ট দেওয়া আছে। টাস্ক হলো ঠিক Kটি গ্লাস ভরতে মিনিমাম বোতল সংখ্যা বের করা। প্রতিটি বোতলের ক্যাপাসিটি ১০০ ইউনিট।
উদাহরণ
যদি N = 5, K = 4, capacity[] = {1, 2, 3, 2, 1} হয়।
- ক্যাপাসিটি ২, ৩, ২, ১-वाले গ্লাসগুলো ভরলে মোট ৮ ইউনিট লাগবে।
- এভাবে, শুধু ১টি বোতল খুললেই হবে।
অ্যালগরিদম
- ঠিক Kটি গ্লাস ভরতে, সবচেয়ে কম ক্যাপাসিটিওয়ালা Kটি গ্লাস নিন
- মোট রিকোয়ার্ড বোতল ক্যালকুলেট করুন: (প্রথম k গ্লাসের ক্যাপাসিটির সম) / (১ বোতলের ক্যাপাসিটি) -এর সিলিং ভ্যালু।
উদাহরণ
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
int minBottles(int *capacity, int n, int k) {
sort(capacity, capacity + n);
int sum = 0;
for (int i = 0; i < k; ++i) {
sum += capacity[i];
}
return ceil((double)sum / 100);
}
int main() {
int capacity[] = {1, 2, 3, 2, 1};
cout << "Min bottles required = " << minBottles(capacity, 5, 4) << endl;
return 0;
}
আউটপুট
যখন আপনি উপরের প্রোগ্রাম কম্পাইল ও এক্সিকিউট করবেন। এটি নিচের আউটপুট জেনারেট করবে:
Min bottles required = 1