একটি অ্যারে A দেওয়া আছে। এমন একটি নন-জিরো ইন্টিজার d খুঁজে বের করতে হবে যাতে, A-এর প্রতিটি উপাদান d দিয়ে ভাগ করলে পজিটিভ মানগুলোর সংখ্যা অ্যারে আকারের অর্ধেক বা তার বেশি হয়। একাধিক d থাকলে যেকোনো একটি রিটার্ন করুন।
উদাহরণ
A = [10, 0, -7, 2, 6] → আউটপুট: 4 (বা 1)
ব্যাখ্যা: n=5, তাই কমপক্ষে ৩টি পজিটিভ দরকার। d=4 হলে অ্যারে হয় [2.5, 0, -1.75, 0.5, 1.5] — এখানে ৩টি পজিটিভ।
সমাধানের ধাপসমূহ
z := 0, f := 0
n := A-এর সাইজ
for i := 0 to n-1:
a := A[i]
if a > 0: z++
if a < 0: f++
if 2*z >= n: return 1
else if 2*f >= n: return -1
else return 0
সি++ কোড উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> A) {
int z = 0, f = 0, n = A.size();
for (int i = 0; i < n; i++) {
int a = A[i];
if (a > 0) z++;
if (a < 0) f++;
}
if (2 * z >= n) return 1;
else if (2 * f >= n) return -1;
else return 0;
}
int main() {
vector<int> A = {10, 0, -7, 2, 6};
cout << solve(A) << endl;
}
ইনপুট
{ 10, 0, -7, 2, 6 }
আউটপুট
1