मान लीजिए हमारे पास n तत्वों की एक सरणी A है और एक अन्य संख्या k है। n कैंडी के ढेर हैं। iवें ढेर में A[i] संख्या में कैंडी हैं। हम दो इंडेक्स i और j (i != j) पर ऑपरेशन कर सकते हैं, फिर A[i] में A[i] संख्या की और कैंडी जोड़ें (A[i] कम नहीं होगा)। हम इस ऑपरेशन को कितनी भी बार कर सकते हैं, लेकिन दुर्भाग्य से यदि कुछ ढेर में सख्ती से k से अधिक कैंडी हैं तो हम ऑपरेशन नहीं कर सकते। हमें इस ऑपरेशन को करने की अधिकतम संख्या ढूंढनी है।
उदाहरण के लिए, यदि इनपुट A = [1, 2, 3]; k = 5 है, तो आउटपुट 5 होगा, क्योंकि हम i = 0 ले सकते हैं और j = 1 के लिए हम तीन बार कर सकते हैं और j = 2 के लिए हम दो बार कर सकते हैं। तो कुल मिलाकर 5 बार।
चरण
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
ans := 0 n := size of A sort the array A for initialize i := 1, when i < n, update (increase i by 1), do: ans := ans + (k - A[i]) return ans
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
#includeusing namespace std; int solve(vector A, int k){ int ans = 0; int 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