একটি অ্যারে A (n উপাদান) এবং একটি মান d দেওয়া আছে। একজন কৃষক nটি হে-বেল পাইল সাজিয়েছে। i-তম পাইলে A[i]টি হে-বেল আছে। প্রতিদিন একটি গরু যেকোনো একটি পাইল থেকে একটা হে-বেল আড়াঝড়া পাইলে সরাতে পারে। গরু d দিনে প্রথম পাইলে সর্বোচ্চ হে-বেল জমা করতে চায়। প্রথম পাইলে সর্বোচ্চ কতটি হে-বেল থাকবে তা বের করতে হবে।
উদাহরণ
d=5, A=[1,0,3,2] → আউটপুট: 3
ব্যাখ্যা: প্রথম দিন ৩য় পাইল থেকে ২য়ে, دوم দিন আবার ৩য় থেকে ২য়ে, পরের দু দিন ২য় থেকে ১ম পাইলে।
সমাধানের ধাপসমূহ
a0 := A[0]
n := A-এর সাইজ
for i := 1 to n-1:
ai := A[i]
w := min(ai, d / i)
a0 += w
d -= w * i
return a0
সি++ কোড উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int solve(int d, vector<int> A) {
int a0 = A[0];
int n = A.size();
for (int i = 1; i < n; i++) {
int ai = A[i];
int w = min(ai, d / i);
a0 += w;
d -= w * i;
}
return a0;
}
int main() {
int d = 5;
vector<int> A = {1, 0, 3, 2};
cout << solve(d, A) << endl;
}
ইনপুট
5, { 1, 0, 3, 2 }
আউটপুট
3