मान लीजिए हमारे पास आकार n की दो सरणी A और B हैं, और एक अन्य संख्या x है। हमें जांचना है कि क्या हम B में तत्वों को पुनर्व्यवस्थित कर सकते हैं, ताकि सभी i के लिए 0 से n-1 की रेंज में A[i] + B[1] <= x हो।
उदाहरण के लिए, यदि इनपुट A = [1, 2, 3]; B = [1, 1, 2]; x = 4 है, तो आउटपुट True होगा, क्योंकि यदि हम B को [1, 2, 1] की तरह पुनर्व्यवस्थित करते हैं, तो योग मान 1 + 1 <= 4, 2 + 2 <= 4, और 3 + 1 <= 4 होंगे।
चरण
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
n := size of A ans := 1 sum := 0 for initialize i := 0, when i < n, update (increase i by 1), do: sum := A[i] + B[n - i - 1] if sum > x, then: ans := 0 if ans is non-zero, then: return true Otherwise return false
उदाहरण
बेहतर समझ के लिए निम्नलिखिक कार्यान्वयन देखें:
#includeusing namespace std; bool solve(vector A, vector B, int x){ int n = A.size(); int ans = 1; int sum = 0; for (int i = 0; i < n; ++i){ sum = A[i] + B[n - i - 1]; if (sum > x) ans = 0; } if (ans) return true; else return false; } int main(){ vector A = { 1, 2, 3 }; vector B = { 1, 1, 2 }; int x = 4; cout << solve(A, B, x) << endl; }
इनपुट
{ 1, 2, 3 }, { 1, 1, 2 }, 4आउटपुट
1