मान लीजिए कि हमारे पास समान आकार के दो सरणियाँ X और Y हैं। पहले दिन ith इंडेक्स पर X[i] पत्थरों के ढेर हैं और दूसरे दिन ith इंडेक्स में Y[i] पत्थरों की संख्या है। पहले दिन कई सदस्य आए हैं। या तो वे कुछ नहीं करते हैं या वे किसी ढेर में कुछ पत्थर जोड़ते हैं या वे कुछ पत्थरों को एक ढेर से दूसरे ढेर में बदल देते हैं। हमें यह जांचना होगा कि Y, X से मान्य है या नहीं।
तो, अगर इनपुट एक्स =[1, 2, 3, 4, 5] जैसा है; Y =[2, 1, 4, 3, 5], तो आउटपुट सही होगा, क्योंकि एक पत्थर को दूसरे ढेर से पहले ढेर में, एक पत्थर को चौथे ढेर से तीसरे ढेर में ले जाएँ।
कदम
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
n := size of A for initialize i := 0, when i < n, update (increase i by 1), do: s := s + A[i] for initialize i := 0, when i < n, update (increase i by 1), do: d := d + B[i] return (if d > s, then false, otherwise 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