मान लीजिए कि हमारे पास n तत्वों के साथ एक सरणी A है। यहाँ n सम है। A[i] ithcard पर लिखी गई एक संख्या है। ऐसे n/2 लोग हैं जो एक गेम खेलना चाहते हैं। शुरुआत में, प्रत्येक खिलाड़ी दो कार्ड लेगा। हमें कार्डों को इस तरह वितरित करने का तरीका खोजना होगा कि कार्ड पर लिखे गए मानों का योग प्रत्येक खिलाड़ी के लिए समान हो।
इसलिए, यदि इनपुट A =[1, 5, 7, 4, 4, 3] जैसा है, तो आउटपुट [(0, 2), (5, 1), (3, 4)] होगा, क्योंकिA[ 0] + ए[2] =8, ए[5] + ए[1] =8 और ए[3] + ए[4] =8.
कदम
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
n := size of A Define one array of pairs p of size n for initialize i := 0, when i < n, update (increase i by 1), do: first element of p[i] := A[i] second element of p[i]:= i sort the array p, p + n for initialize i := 0, when i < n / 2, update (increase i by 1), do: print second element of p[i] and second element of p[n - i - 1]
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h> using namespace std; void solve(vector<int> A){ int n = A.size(); pair<int, int> p[n]; for (int i = 0; i < n; i++){ p[i].first = A[i]; p[i].second = i; } sort(p, p + n); for (int i = 0; i < n / 2; i++) cout << "(" << p[i].second << ", " << p[n - i - 1].second <<"), "; } int main(){ vector<int> A = { 1, 5, 7, 4, 4, 3 }; solve(A); }
इनपुट
{ 1, 5, 7, 4, 4, 3 }
आउटपुट
(0, 2), (5, 1), (3, 4),