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