यहाँ आपका अनुवाद है: कुंजी के अनुसार छँटाई और डुप्लिकेट हटाना

C++ Hard sorting

कार्य «यहाँ आपका अनुवाद है: कुंजी के अनुसार छँटाई और डुप्लिकेट हटाना»

पूर्णांकों की एक सरणी दी गई है। इसे आरोही क्रम में क्रमबद्ध करना आवश्यक है, सभी दोहराए गए मानों को हटाते हुए, लेकिन एक शर्त के साथ: यदि कोई संख्या एक से अधिक बार आती है, तो डुप्लिकेट हटाने के बाद क्रमबद्ध सरणी में उसकी क्रम संख्या (शून्य से शुरू इंडेक्स) मूल सरणी में उसके आने की संख्या माइनस एक के बराबर होनी चाहिए। दूसरे शब्दों में, प्रत्येक अद्वितीय मान x के लिए, जो मूल सरणी में k बार आता है, परिणामी सरणी में x का ठीक एक बार आना चाहिए, और उसका इंडेक्स k-1 के बराबर होना चाहिए। यदि किसी x के लिए यह संभव नहीं है (उदाहरण के लिए, इंडेक्स सरणी की सीमा से बाहर चला जाता है या पहले से किसी अन्य संख्या द्वारा कब्जा कर लिया गया है), तो ऐसे x को परिणाम में शामिल नहीं किया जाता है। यह गारंटी है कि सभी संख्याओं के लिए जिन्हें शामिल करने की आवश्यकता है, शर्त पूरी हो सकती है। अंतिम सरणी को आरोही क्रम में क्रमबद्ध करके प्रिंट करें।

इनपुट प्रारूप

पहली पंक्ति: एक पूर्णांक n (1 ≤ n ≤ 10^5) — तत्वों की संख्या। दूसरी पंक्ति: n पूर्णांक, जिनका निरपेक्ष मान 10^9 से अधिक नहीं है, रिक्त स्थानों द्वारा अलग किए गए हैं।

आउटपुट प्रारूप

पहली पंक्ति में अंतिम सरणी में तत्वों की संख्या m प्रिंट करें। दूसरी पंक्ति में आरोही क्रम में m पूर्णांक प्रिंट करें।

उदाहरण

उदाहरण 1

इनपुट
6 3 1 2 2 3 1
आउटपुट
1 3

उदाहरण 2

इनपुट
5 5 5 5 5 5
आउटपुट
1 5

उदाहरण 3

इनपुट
5 Математика Иванов 101 2 3 Физика Петров 202 3 2 Математика Иванов 101 2 3 Химия Сидоров 303 4 1 Физика Петров 202 3 2
आउटपुट
3 Математика Иванов 101 2 3 Физика Петров 202 3 2 Химия Сидоров 303 4 1

उदाहरण 4

इनपुट
7 4 2 4 2 4 2 4
आउटपुट
2 2 4

उदाहरण 5

इनपुट
3 Алгебра Смирнов 105 1 1 Алгебра Смирнов 105 1 1 Геометрия Смирнов 105 1 2
आउटपुट
2 Алгебра Смирнов 105 1 1 Геометрия Смирнов 105 1 2
main.cpp