मान लीजिए हमारे पास n तत्वों वाला एक सरणी A और एक संख्या m है। n छात्र परीक्षा दे रहे हैं। उच्चतम संभव स्कोर m है। A[i] i-वें छात्र का स्कोर है। हम प्रत्येक छात्र के स्कोर में हेरफेर कर सकते हैं, लेकिन शर्तें पूरी होनी चाहिए: स्कोर m से अधिक नहीं होगा, सभी स्कोर पूर्णांक हैं, और सभी छात्रों का औसत अंक नहीं बदलता। यदि हम पहले व्यक्ति के स्कोर को अधिकतम करना चाहते हैं, तो हम उसे अधिकतम कितना स्कोर दे सकते हैं?
उदाहरण के लिए, यदि इनपुट A = [1, 2, 3, 4]; m = 10 है, तो आउटपुट 10 होगा, क्योंकि औसत 2.5 है, हम स्कोर [10, 0, 0, 0] सेट कर सकते हैं जहां औसत समान रहता है लेकिन पहले का स्कोर अधिकतम होता है।
चरण
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
sum := 0 n := size of A for initialize j := 0, when j < n, update (increase j by 1), do: sum := sum + A[j] return minimum of m and sum
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
#include <bits/stdc++.h> using namespace std; int solve(vector<int> A, int m){ int sum = 0; int n = A.size(); for (int j = 0; j < n; j++){ sum += A[j]; } return min(m, sum); } int main(){ vector<int> A = { 1, 2, 3, 4 }; int m = 10; cout << solve(A, m) << endl; }
इनपुट
{ 1, 2, 3, 4 }, 10
आउटपुट
10