मान लीजिए हमारे पास n अलग-अलग तत्वों वाला एक सरणी A है। एक सरणी B को अच्छा कहा जाता है यदि किन्हीं दो अलग-अलग तत्वों B[i] और B[j] के लिए, |B[i] - B[j]| B में कम से कम एक बार प्रकट होता है, और B में सभी तत्व अलग-अलग होंगे। हमें जांचना है कि क्या हम A में कई पूर्णांक जोड़कर इसे अधिकतम 300 आकार का अच्छा बना सकते हैं। यदि संभव हो तो नई सरणी वापस करें, अन्यथा -1 वापस करें।
उदाहरण के लिए, यदि इनपुट A = [4, 8, 12, 6] है, तो आउटपुट [8, 12, 6, 2, 4, 10] होगा, क्योंकि |4-2| = |6-4| = |8-6| = |10-8| = |12-10| = 2 सरणी में है, |6-2| = |8-4| = |10-6| = |12-8| = 4 सरणी में है, |8-2| = |10-4| = |12-6| = 6 सरणी में है, |10-2| = |12-4| = 8 सरणी में है, और |12-2| = 10 सरणी में है, तो सरणी अच्छी है। (अन्य उत्तर भी संभव हैं)
चरण
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
n := size of A t := 0 b := 0 for initialize i := 0, when i < n, update (increase i by 1), do: a := A[i] if a < 0, then: t := 1 b := maximum of a and b if t is non-zero, then: print -1 Otherwise for initialize i := 0, when i <= b, update (increase i by 1), do: print i
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
#include <bits/stdc++.h> using namespace std; void solve(vector<int> A) { int n = A.size(); int t = 0; int b = 0; for (int i = 0; i < n; i++) { int a = A[i]; if (a < 0) t = 1; b = max(a, b); } if (t) cout << "-1"; else { for (int i = 0; i <= b; i++) cout << i << ", "; } } int main() { vector<int> A = { 4, 8, 12, 6 }; solve(A); }
इनपुट
{ 4, 8, 12, 6 }
आउटपुट
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,