Radiotorņi

4
Latvijas Informātikas olimpiādes logo

Uzdevums no 2025. g. LIO atlases kārtas; abām grupām.

Stāsts

Kalnainā teritorijā izvietoti NN radiotorņi, kas sanumurēti ar naturāliem skaitļiem no 11 līdz NN. Šie torņi veido īpatnēju telekomunikācijas tīklu, kur signāls no viena torņa var tikt pārraidīts uz jebkuru citu radiotorni tieši vienā vienīgā veidā. Tīklu veido N−1N-1 torņu pāru, kas savā starpā pārraida informāciju, savienojums.

Katram tornim i(1≤i≤N)i (1 \leq i \leq N) ir piešķirta frekvence fif_i, kurā tas pārraida signālu. Katram tornim signāla pārraides frekvence fif_i pieder frekvenču joslai, kurā pārraide ir visefektīvākā: fi∈[K,L]f_i \in [K, L].

Radiotorņu tīkls darbojas neoptimāli, ja tīklā ir viens vai vairāki frekvenču konflikti - t.i., eksistē torņu (a,b)(a, b) savienojums, kur fa=fbf_a = f_b, jeb abi torņi signāla pārraidei izmanto vienu un to pašu frekvenci. Lai tā nebūtu, vienam vai vairākiem torņiem to signāla pārraides frekvenci var būt nepieciešams mainīt.

Signāla pārraides frekvences maiņa ir sarežģīta operācija, tāpēc katram radiotornim ii ir iespējams veikt šādu darbību ne vairāk kā vienreiz: palielināt vai samazināt fif_i uz attiecīgi fi+1f_i+1 vai fi−1f_i-1. Tomēr arī pēc šīs darbības veikšanas katra radiotorņa frekvencei jāpaliek labo frekvenču joslā [K,L][K, L]. Turklāt šo maiņu skaitam jābūt mazākajam iespējamajam.

Piemēram, 1. att. parādītajā tīklā (katra torņa frekvence ir atzīmēta uz bultiņām pie torņus apzīmējošajiem aplīšiem) visas frekvences atrodas frekvenču joslā [3;5][3; 5] un ir trīs frekvenču konflikti: 4−64-6, 4−34-3 un 4−24-2, kurus nav iespējams atrisināt, nomainot frekvenci tikai vienam no torņiem. Ja labo frekvenču joslā atrastos arī vērtība 22, tad tas būtu iespējams, nomainot ceturtā torņa frekvenci no 33 uz 22. Bet tagad jānomaina divu torņu frekvences: ceturtā torņa frekvenci no 33 uz 44, bet piektā - no 44 uz 33 (2. att.).

Radiotorņu tīkls ar frekvenču konfliktiem.
Radiotorņu tīkls ar frekvenču konfliktiem.
Pārveidotais tīkls bez frekvenču konfliktiem.
Pārveidotais tīkls bez frekvenču konfliktiem.

Uzrakstiet datorprogrammu, kas realizē aprakstīto radiotorņu frekvenču maiņu, veicot mazāko nepieciešamo maiņu skaitu!

Ievaddati

Pirmajā rindā doti trīs naturāli skaitļi: radiotorņu skaits NN (2≤N≤5⋅1052 \leq N \leq 5 \cdot 10^5), frekvenču joslas kreisais KK (K≥1K \geq 1) un labais LL (K<L≤109K < L \leq 10^9) galapunkts. Otrajā rindā doti NN naturāli skaitļi - radiotorņu izmantotās frekvences. Katram ii (1≤i≤N1 \leq i \leq N) ii-tā radiotorņa izmantotā frekvence fif_i dota kā ii-tais skaitlis rindā pēc kārtas. Zināms, ka visiem ii fi∈[K,L]f_i \in [K, L]. Nākamajā N−1N-1 ievaddatu rindā dots radiotorņu tīkla savienojumu apraksts - katrā no šīm rindām dots atšķirīgu naturālu skaitļu pāris - divu savienoto torņu numuri. Starp katriem diviem blakus skaitļiem ievaddatos ir tukšumzīme.

Izvaddati

Izvaddatu pirmajā rindā jābūt veselam nenegatīvam skaitlim SS - mazākajam radiotorņu skaitam, kuru frekvences jāmaina, lai novērstu visus frekvenču konfliktus. Izvaddatu otrajā rindā jābūt NN naturāliem skaitļiem - radiotorņu izmantotajām frekvencēm pēc visu frekvenču konfliktu novēršanas. Katram ii (1≤i≤N1 \leq i \leq N) ii-tā radiotorņa izmantotā frekvence fif_i jāizvada kā ii-tais skaitlis rindā pēc kārtas. Visiem ii jābūt spēkā fi∈[K,L]f_i \in [K, L]. Starp katriem diviem blakus skaitļiem izvaddatos ir jābūt tukšumzīmei.

Apakšuzdevumi un to vērtēšana

#Apakšuzdevuma aprakstsPunkti
1.

N≤10N \leq 10

13
2.

L=K+1L=K+1

18
3.

Neviens tornis nav savienots ar vairāk kā diviem citiem

20
4.

Visi fif_i ir vienādi jeb torņi izmanto vienu un to pašu frekvenci

21
5.

Bez papildu ierobežojumiem

28
Apakšuzdevumu punktu summa = 100.

Piemēri

Ievaddati

6 3 5 5 3 3 3 4 3 1 5 5 4 6 4 4 3 4 2 Kopēt kodu

Izvaddati

2 5 3 3 4 3 3 Kopēt kodu

Ievaddati

6 1 10 5 3 7 3 6 3 1 2 2 3 3 4 4 5 5 6 Kopēt kodu

Izvaddati

0 5 3 7 3 6 3 Kopēt kodu