Dīvainā kārtošana

grūts
Latvijas Informātikas olimpiādes logo
Uzdevums no Latvijas 38. (2024./2025. m.g.) informātikas olimpiādes (LIO) valsts kārtas; jaunākajai (8.-10. klašu) grupai.

Stāsts

Aplūkosim šādu visai dīvainu NN naturālu skaitļu kārtošanas algoritmu: No dotajiem skaitļiem izvēlas mazāko skaitli - tas sakārtotajā virknē ai{a_i} būs pirmais loceklis a1a_1. No atlikušajiem skaitļiem izvēlas mazāko skaitli, kura ciparu summa ir lielāka par a1a_1 ciparu summu - tas sakārtotajā virknē būs otrais loceklis a2a_2. No atlikušajiem skaitļiem izvēlas mazāko skaitli, kas vienlaikus ir lielāks par a2a_2 un kura ciparu summa ir lielāka par a2a_2 ciparu summu. Tas būs a3a_3. Tā turpina, kārtējam iegūtajam virknes loceklim aia_i no atlikušajiem skaitļiem meklējot mazāko skaitli, kurš gan pats ir lielāks par aia_i, gan kura ciparu summa ir lielāka par aia_i ciparu summu. Un šāds skaitlis kļūst par sakārtotās skaitļu virknes nākamo locekli ai+1a_{i+1}.

Ja kādā brīdī šo procesu turpināt nav iespējams (no atlikušajiem skaitļiem neviens neatbilst iepriekšminētajiem kritērijiem), kā nākamais virknes loceklis tiek izvēlēts mazākais no atlikušajiem skaitļiem un process tiek turpināts līdz visi skaitļi ir apstrādāti.

Piemēram, ja doti skaitļi 21,13,7,5,118,129,19,90,74,11821, 13, 7, 5, 118, 129, 19, 90, 74, 118, tad sakārtotā virkne tiek iegūta šādi:

  • a1=5a_1 = 5 (mazākais skaitlis starp dotajiem),
  • a2=7a_2 = 7 (7>57>5, ciparu summas: 7>57>5),
  • a3=19a_3 = 19 (19>7,10>719>7, 10>7),
  • a4=74a_4 = 74 (74>19,11>1074>19, 11>10),
  • a5=129a_5 = 129 (129>74,12>11129>74, 12>11),
  • a6=13a_6 = 13 (mazākais no atlikušajiem),
  • a7=90a_7 = 90 (90>13,9>490>13, 9>4),
  • a8=118a_8 = 118 (118>90,10>9118>90, 10>9),
  • a9=21a_9 = 21 (mazākais no atlikušajiem),
  • a10=118a_{10} = 118 (118>21,10>3118>21, 10>3).

Tādējādi sakārtotā skaitļu virkne ir šāda: 5,7,19,74,129,13,90,118,21,1185, 7, 19, 74, 129, 13, 90, 118, 21, 118.

Uzrakstiet datorprogrammu, kas dotos NN naturālos skaitļus sakārto pēc aprakstītā algoritma!

Ievaddati

Pirmajā rindā dots skaitļu skaits - naturāls skaitlis NN (N2105N \leq 2 \cdot 10^5).

Otrajā rindā doti NN naturāli skaitļi. Zināms, ka neviena skaitļa vērtība nepārsniedz 101810^{18}.

Starp katriem diviem blakus skaitļiem ievaddatos ir tukšumzīme.

Izvaddati

Izvaddatu vienīgajā rindā jābūt NN naturāliem skaitļiem - sakārtotajai skaitļu virknei. Starp katriem diviem blakus skaitļiem jābūt tukšumzīmei.

Piemēri

Ievaddati

10 21 13 7 5 118 129 19 90 74 118 Kopēt kodu

Izvaddati

5 7 19 74 129 13 90 118 21 118 Kopēt kodu

Piezīme:

Atbilst piemēram uzdevuma tekstā.

Ievaddati

8 11 12 21 22 11 12 21 22 Kopēt kodu

Izvaddati

11 12 22 11 12 22 21 21 Kopēt kodu

Izpildes resursu ierobežojumi

CPU izpildes laiks uz testu: 0.4 sekundes.
RAM atmiņas apjoms uz testu: 256 megabaiti.

Apakšuzdevumi un to vērtēšana

#Apakšuzdevuma aprakstsPunkti
1.

Jāatrisina uzdevuma tekstā dotie trīs piemēri.

2
2.

N100N \leq 100 un visi skaitļi ir atšķirīgi.

13
3.

N1000N \leq 1000.

10
4.

N104N \leq 10^4 un zināms, ka rezultāta virknē ne vairāk kā 100100 dažādām ii vērtībām aiai+1a_i \geq a_{i+1}.

15
5.

N5104N \leq 5 \cdot 10^4 un visi skaitļi ir atšķirīgi.

15
6.

N5104N \leq 5 \cdot 10^4.

15
7.

Bez papildu ierobežojumiem.

30
Apakšuzdevumu punktu summa = 100.

1. apakšuzdevuma ievaddati

10 34 62 86 39 18 3 36 40 25 12 Kopēt kodu
12 90 98 99 97 105 103 101 91 109 104 107 107 Kopēt kodu
12 740 1036 1073 999 925 851 777 777 1073 888 999 999 Kopēt kodu