দুটি সমান আকারের অ্যারে X এবং Y দেওয়া আছে। প্রথম দিন i-তম ইনডেক্সে X[i] পাথর ছিল, দ্বিতীয় দিন Y[i]। প্রথম দিন অনেক সদস্য এলো — কেউ কিছু করলো না, কেউ কিছু পাইল বাড়িয়েছে, কেউ এক পাইল থেকে অন্য পাইলে পাথর সরিয়েছে। Y কি X-থেকে বৈধভাবে এসে পারে তা যাচাই করতে হবে।
উদাহরণ
X = [1, 2, 3, 4, 5], Y = [2, 1, 4, 3, 5]
আউটপুট: True — কারণ ২য় পাইল থেকে ১ পাথর ১ম পাইলে, ৪র্থ পাইল থেকে ১ পাথর ৩য় পাইলে সরানো হয়েছে।
সমাধানের ধাপসমূহ
n := A-এর সাইজ s := 0, d := 0 for i := 0 to n-1: s += A[i] for i := 0 to n-1: d += B[i] return (d > s ? false : true)
সি++ কোড উদাহরণ
#include <bits/stdc++.h>
using namespace std;
bool solve(vector<int> A, vector<int> B) {
int n = A.size(), d = 0, s = 0;
for (int i = 0; i < n; i++) s += A[i];
for (int i = 0; i < n; i++) d += B[i];
return d > s ? false : true;
}
int main() {
vector<int> X = {1, 2, 3, 4, 5};
vector<int> Y = {2, 1, 4, 3, 5};
cout << solve(X, Y) << endl;
}
ইনপুট
{ 1, 2, 3, 4, 5 }, { 2, 1, 4, 3, 5 }
আউটপুট
1