একটি অ্যারে A আছে n উপাদানের সাথে। n জন ছাত্র আছে, প্রত্যেকের ঠিক k টি ভোট আছে এবং সব ভোট ব্যবহার করতে হবে। দুটি পার্টি আছে। A[i] মানে i-তম ছাত্র প্রথম পার্টিকে A[i] ভোট দিয়েছে, বাকি k-A[i] ভোট دوم পার্টিকে যাবে। دوم পার্টি k এমনভাবে নির্ধারণ করতে চায় যাতে তারা জিতে। ন্যূনতম সম্ভাব্য k কত?
উদাহরণ
A = [2, 2, 3, 2, 2]
আউটপুট: 5
ব্যাখ্যা: প্রথম পার্টি পেল ১১ ভোট। k=5 হলে دوم পার্টি পাবে (3+3+2+3+3)=১৪ ভোট এবং জিতবে।
সমাধানের ধাপসমূহ
n := A-এর সাইজ
s := 0, m := 0
for k := 0 to n-1:
x := A[k]
m := max(m, x)
s += x
return max(m, 2*s/n + 1)
সি++ কোড উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> A) {
int n = A.size(), 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