मान लीजिए हमारे पास n तत्वों की एक सरणी A है। यहां n सम है। A[i] iवें कार्ड पर लिखी संख्या है। n/2 लोग हैं जो खेल खेलना चाहते हैं। शुरुआत में, प्रत्येक खिलाड़ी दो कार्ड लेगा। हमें कार्ड वितरित करने का तरीका ढूंढना है जैसे कि कार्ड पर लिखे मानों का योग प्रत्येक खिलाड़ी के लिए समान हो।
उदाहरण के लिए, यदि इनपुट A = [1, 5, 7, 4, 4, 3] है, तो आउटपुट [(0, 2), (5, 1), (3, 4)] होगा, क्योंकि A[0] + A[2] = 8, A[5] + A[1] = 8 और A[3] + A[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]
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
#includeusing namespace std; void solve(vector A){ int n = A.size(); pair 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 A = { 1, 5, 7, 4, 4, 3 }; solve(A); }
इनपुट
{ 1, 5, 7, 4, 4, 3 }आउटपुट
(0, 2), (5, 1), (3, 4),