मान लीजिए हमारे पास n तत्वों वाला एक ऐरे A है। हम दी गई संख्याओं के किसी भी उपसमुच्चय का चयन करते हैं और इन संख्याओं को नेगेट करते हैं। हमें ऐरे में प्राप्त होने वाले विभिन्न मानों की अधिकतम संख्या ढूंढनी है।
उदाहरण के लिए, यदि इनपुट A = [1, 1, 2, 2] है, तो आउटपुट 4 होगा, क्योंकि हम पहली और अंतिम संख्याओं को नेगेट करके ऐरे [-1, 1, 2, -2] बना सकते हैं जिसमें चार अलग-अलग मान हैं।
चरण
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
एक सेट se परिभाषित करें n := A का आकार i := 0 से n-1 तक, करें: x := A[i] यदि x, se में मौजूद है, तो: -x को se में डालें अन्यथा x को se में डालें se का आकार वापस करें
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
#include <bits/stdc++.h> using namespace std; int solve(vector<int> A) { set<int> se; int n = A.size(); for (int i = 0; i < n; i++) { int x = A[i]; if (se.count(x)) se.insert(-x); else se.insert(x); } return se.size(); } int main() { vector<int> A = { 1, 1, 2, 2 }; cout << solve(A) << endl; } इनपुट
{ 1, 1, 2, 2 } आउटपुट
4