Zāģa starpība

grūts
Latvijas Informātikas olimpiādes logo
Uzdevums no Latvijas 36. (2022./2023. m. g.) informātikas olimpiādes (LIO) valsts kārtas.

Stāsts

Naturālu skaitļu virkni {ai}\{a_i\} sauksim par zāģa virkni, ja tās locekļus saista sakarība:

a1<a2>a3<a4>a_1 < a_2 > a_3 < a_4 > \ldots

Piemēram, zāģa virknes ir 7, 8, 4, 13, 4 un 7, 13, 4, 8, 4, bet nav – 4, 4, 13, 8, 7 un 13, 4, 8, 4, 7.

Ja zāģa virknē ir vairāk par vienu elementu, tad šādai virknei varam aprēķināt katru divu blakus skaitļu starpību pēc moduļa ai+1ai|a_{i+1} - a_i| un tad atrast mazāko no šīm starpībām.

Piemēram, ja doti skaitļi 1, 2, 4, 4, 7, 7, 9, 11, 12, tad no tiem var izveidot vairākas zāģa virknes ar atšķirīgu mazāko blakus skaitļu starpību pēc moduļa:

  • 11-12-7-9-4-7-2-4-1 (mazākā starpība 1)
  • 1-4-2-12-4-11-7-9-7 (2)
  • 4-7-4-12-1-9-2-11-7 (3)
  • 2-7-1-11-4-9-4-12-7 (5)

Šajā piemērā 5 ir lielākā iespējamā mazākās starpības vērtība.

Uzrakstiet datorprogrammu, kas dotus NN naturālus skaitļus sakārto zāģa virknē tā, ka mazākā divu blakus skaitļu starpība pēc moduļa ir lielākā iespējamā!

Ievaddati

Pirmajā rindā dota naturāla skaitļa NN (skaitļu skaits, 2N1052 \leq N \leq 10^5) vērtība. Otrajā rindā doti NN naturāli skaitļi, kas atdalīti ar tukšumzīmēm. Neviens no dotajiem skaitļiem nepārsniedz 10910^9.

Izvaddati

Izvaddatu pirmajā rindā jāizvada naturāls skaitlis SS – lielākā iespējamā zāģa virknes, kuru iespējams izveidot no dotajiem skaitļiem, divu blakus skaitļu mazākā starpība pēc moduļa.

Otrajā rindā jābūt dotajiem NN naturālajiem skaitļiem, kas sakārtoti zāģa virknē tā, ka mazākā divu blakus skaitļu starpība pēc moduļa ir SS. Ja iespējams izveidot vairākas zāģa virknes ar blakus skaitļu starpību SS, jāizvada jebkura no tām.

Ja no dotajiem skaitļiem izveidot zāģa virkni nav iespējams, tad izvaddatu pirmajā rindā jāizvada 0 un otrajā – dotie skaitļi patvaļīgā secībā.

Starp katriem diviem blakus skaitļiem izvaddatos jābūt tukšumzīmei.

Piemēri

Ievaddati

9 12 11 9 7 7 4 1 2 4 Kopēt kodu

Izvaddati

5 7 12 4 11 4 9 2 7 1 Kopēt kodu

Piezīme:

Atbilst piemēram uzdevuma tekstā. Der arī citas virknes. Piemēram, 4 9 4 11 1 7 2 12 7

Ievaddati

4 1 1 200 1 Kopēt kodu

Izvaddati

0 1 200 1 1 Kopēt kodu

Ievaddati

4 2 33 33 1 Kopēt kodu

Izvaddati

31 2 33 1 33 Kopēt kodu

Piezīme:

Der arī virkne 2 33 1 33

Izpildes resursu ierobežojumi

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

Apakšuzdevumi un to vērtēšana

#Apraksts un ierobežojumiPunkti
1.

Uzdevuma tekstā dotie trīs piemēri

2
2.

N16N \leq 16, visiem ii (1iN)(1 \leq i \leq N) ai103a_i \leq 10^3

18
3.

16<N102416 < N \leq 1024, visiem ii (1iN)(1 \leq i \leq N) ai106a_i \leq 10^6, visi aia_i ir savā starpā atšķirīgi

26
4.

Bez papildu ierobežojumiem

54
Apakšuzdevumu punktu summa = 100.

1. apakšuzdevuma ievaddati

8 1 26 13 10 7 5 2 14 Kopēt kodu
19 11 3 2 2 6 1 4 5 9 12 6 1 4 5 9 12 7 8 10 Kopēt kodu
24 1 26 1 2 3 4 5 13 10 15 15 15 7 5 2 14 12 11 10 15 23 20 19 5 Kopēt kodu