মান লিখুন: আমাদের কাছে n উপাদান বিশিষ্ট একটি অ্যারে A 있습니다। এক অপারেশনে আমরা A-তে থাকা যেকোনো একটি উপাদানের সাথে ১ যোগ করতে পারি। যদি অ্যারে-এর সব উপাদানের যোগফল বা গুণফল শূন্য হয়, তবে আমরা একবার আরো অপারেশন করতে পারি। যোগফল ও গুণফল দুটোই শূন্য থেকে ভিন্ন করার জন্য ন্যূনতম কত ধাপ লাগবে তা গণনা করতে হবে।
উদাহরণ
যদি ইনপুট হয় A = [-1, 0, 0, 1], তবে আউটপুট হবে 2, কারণ যোগফল ও গুণফল দুটোই ০। দ্বিতীয় ও তৃতীয় উপাদানে ১ যোগ করলে অ্যারে হবে [-1, 1, 1, 1], যোগফল ২ এবং গুণফল -১।
সমাধানের ধাপসমূহ
sum := 0, cnt := 0
n := A এর আকার
for i := 0 থেকে n-1:
x := A[i]
sum := sum + x
cnt := cnt + (x == 0 ? 1 : 0)
যদি sum + cnt == 0: cnt + 1 রিটার্ন করুন
অন্যথায়: cnt রিটার্ন করুন
C++ বাস্তবায়ন
#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> A) {
int sum = 0, cnt = 0;
int n = A.size();
for (int i = 0; i < n; i++) {
int x = A[i];
sum += x;
cnt += x == 0 ? 1 : 0;
}
return sum + cnt == 0 ? cnt + 1 : cnt;
}
int main() {
vector<int> A = { -1, 0, 0, 1 };
cout << solve(A) << endl;
}
ইনপুট
{ -1, 0, 0, 1 }
আউটপুট
2