একটি অ্যারে A (n উপাদান) এবং একটি সংখ্যা k দেওয়া আছে। nটি ক্যান্ডি পাইল আছে, i-তম পাইলে A[i] ক্যান্ডি। অপারেশন: দুটি ইন্ডেক্স i,j (i!=j) বেছে নিয়ে A[i] ক্যান্ডি A[j]-তে যোগ করুন (A[i] কমবে না)। এই অপারেশন যেকোনোবার করা যায়, কিন্তু কোনো পাইল k-র চেয়ে স্ট্রিক্টলি বেশি হলে অপারেশন বন্ধ। সর্বোচ্চ কতবার অপারেশন করা যাবে তা বের করতে হবে।
উদাহরণ
A=[1,2,3], k=5 → আউটপুট: 5
ব্যাখ্যা: i=0, j=1 এর জন্য ৩ বার, j=2 এর জন্য ২ বার — মোট ৫ বার।
সমাধানের ধাপসমূহ
ans := 0
n := A.size()
sort(A)
for i := 1 to n-1:
ans += (k - A[i]) / A[0]
return ans
সি++ কোড উদাহরণ
#include <bits/stdc++.h> using namespace std; int solve(vectorA, int k) { int ans = 0, n = A.size(); sort(A.begin(), A.end()); for (int i = 1; i < n; i++) ans += (k - A[i]) / A[0]; return ans; } int main() { vector A = {1,2,3}; int k = 5; cout << solve(A,k) << endl; }
ইনপুট
{1,2,3}, 5
আউটপুট
5