Sortierung nach Schlüssel mit Entfernung von Duplikaten
C++
Hard
sorting
Aufgabe «Sortierung nach Schlüssel mit Entfernung von Duplikaten»
Gegeben ist ein Array von ganzen Zahlen. Es muss aufsteigend sortiert werden, wobei alle doppelten Werte entfernt werden, jedoch mit einer Bedingung: Wenn eine Zahl mehr als einmal vorkommt, muss nach Entfernung der Duplikate ihr Index im sortierten Array (nullbasiert) gleich der Anzahl ihrer Vorkommen im ursprünglichen Array minus eins sein. Mit anderen Worten, für jeden eindeutigen Wert x, der k-mal im ursprünglichen Array vorkommt, soll es im resultierenden Array genau ein Vorkommen von x geben, und dessen Index muss gleich k-1 sein. Wenn dies für ein bestimmtes x nicht möglich ist (z. B. der Index liegt außerhalb der Array-Grenzen oder ist bereits durch eine andere Zahl belegt), wird ein solches x nicht in das Ergebnis aufgenommen. Es wird garantiert, dass die Bedingung für alle Zahlen, die aufgenommen werden müssen, erfüllbar ist. Geben Sie das endgültige Array, aufsteigend sortiert, aus.
Eingabeformat
Erste Zeile: eine ganze Zahl n (1 ≤ n ≤ 10^5) — die Anzahl der Elemente. Zweite Zeile: n ganze Zahlen, deren Betrag 10^9 nicht überschreitet, getrennt durch Leerzeichen.
Ausgabeformat
Geben Sie in der ersten Zeile die Zahl m aus — die Anzahl der Elemente im resultierenden Array. In der zweiten Zeile geben Sie m ganze Zahlen in aufsteigender Reihenfolge aus.
Beispiele
Beispiel 1
EINGABE
6
3 1 2 2 3 1
AUSGABE
1
3
Beispiel 2
EINGABE
5
5 5 5 5 5
AUSGABE
1
5
Beispiel 3
EINGABE
5
Математика Иванов 101 2 3
Физика Петров 202 3 2
Математика Иванов 101 2 3
Химия Сидоров 303 4 1
Физика Петров 202 3 2
AUSGABE
3
Математика Иванов 101 2 3
Физика Петров 202 3 2
Химия Сидоров 303 4 1
Beispiel 4
EINGABE
7
4 2 4 2 4 2 4
AUSGABE
2
2 4
Beispiel 5
EINGABE
3
Алгебра Смирнов 105 1 1
Алгебра Смирнов 105 1 1
Геометрия Смирнов 105 1 2
AUSGABE
2
Алгебра Смирнов 105 1 1
Геометрия Смирнов 105 1 2
main.cpp