मान लीजिए कि हमारे पास n तत्वों और एक संख्या m के साथ एक सरणी A है। एनीक्सम देने वाले n छात्र हैं। उच्चतम संभव स्कोर एम है। ए [i] ith छात्र का स्कोर है। हम प्रत्येक छात्र के स्कोर में हेरफेर कर सकते हैं, लेकिन शर्तों को पूरा करना होगा। स्कोर m से अधिक नहीं होगा, सभी स्कोर पूर्णांक हैं और सभी छात्रों के औसत अंक नहीं बदलते हैं। अगर हम पहले व्यक्ति के स्कोर को अधिकतम करना चाहते हैं तो हम जो उच्चतम संभव स्कोर दे सकते हैं वह क्या होगा।
तो, अगर इनपुट ए =[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