Bultiņu puzle

4
Latvijas Informātikas olimpiādes logo

Uzdevums no 2026. g. LIO valsts kārtas; abām grupām.

Stāsts

Normundam dzimšanas dienā uzdāvināja puzli - N×MN \times M rūtiņu tabulu kopā ar bultiņu komplektu. Bultiņas var ievietot šajā tabulā, kur bultiņa garumā KK noklās kādu 1×K1 \times K rūtiņu taisntūri. Puzles mērķis ir aizpildīt tabulu ar dotajām bultiņām tā, lai katra rūtiņa tiktu noklāta ar kādu bultiņu tieši vienreiz, un visas bultiņas būtu izmantotas.

Viss, protams, nav tik vienkārši, jo puzlei ir papildu noteikumi. Bultiņu komplekts sastāv no trīs dažādu virzienu bultiņām:

  • "→\rightarrow" bultiņām ar vienības garuma malu jāpieskaras tabulas kreisajai malai;
  • "←\leftarrow" bultiņām ar vienības garuma malu jāpieskaras tabulas labajai malai;
  • "↓\downarrow" bultiņām ar vienības garuma malu jāpieskaras tabulas augšējai malai.

Dotajā bultiņu komplektā ir tieši NN "→\rightarrow" bultiņas, tieši NN "←\leftarrow" bultiņas un tieši MM "↓\downarrow" bultiņas. Ievērojiet, ka bultiņas garums var būt vienāds arī ar 00: tādā gadījumā bultiņa nenoklāj nevienu rūtiņu (bultiņu var iztēloties kā 1×01 \times 0 taisnstūri).

Piemēram, 3×53 \times 5 izmēra tabulu var noklāt ar trim "→\rightarrow" bultiņām ar garumiem 11, 22, 22, trim "←\leftarrow" bultiņām ar garumiem 00, 11, 44 un piecām "↓\downarrow" bultiņām ar garumiem 00, 00, 11, 22, 22 tā, kā parādīts zīmējumā:

Piemērs tabulas noklāšanai ar bultiņām
Piemērs tabulas noklāšanai ar bultiņām

Palīdziet Normundam atrisināt puzli un atrodiet vienu iespējamo tabulas aizpildījumu ar dotajām bultiņām, vai arī nosakiet, ka puzle ir brāķis un ar dotajām bultiņām tabulu noklāt nevar!

Ievaddati

Pirmajā rindā doti divi naturāli skaitļi NN un MM (1≤N,M≤2⋅1051 \leq N, M \leq 2 \cdot 10^5), tabulas augstums un platums. Nākamajā rindā doti NN nenegatīvi skaitļi a1a_1, …\dots, aNa_N (0≤ai≤M0 \leq a_i \leq M), doto "→\rightarrow" bultiņu garumi. Trešajā rindā doti NN nenegatīvi skaitļi b1b_1, …\dots, bNb_N (0≤bi≤M0 \leq b_i \leq M), doto "←\leftarrow" bultiņu garumi. Pēdējā rindā doti MM nenegatīvi skaitļi c1c_1, …\dots, cMc_M (0≤ci≤N0 \leq c_i \leq N), doto "↓\downarrow" bultiņu garumi.

Ņemiet vērā, ka katra veida bultiņu secība ievaddatos var būt patvaļīga. Tiek garantēts, ka visos testos a1+⋯+aN+b1+⋯+bN+c1+⋯+cM=NMa_1+\dots+a_N+b_1+\dots+b_N+c_1+\dots+c_M=N M, t.i., visu bultiņu kopējais laukums ir vienāds ar tabulas laukumu.

Izvaddati

Ja prasītais ir iespējams, izvadiet trīs rindas ar skaitļiem. Pirmajā rindā izvadiet NN skaitļus - doto "→\rightarrow" bultiņu garumus jūsu aizpildījumā secībā no augšas uz leju. Nākamajā rindā izvadiet NN skaitļus - doto "←\leftarrow" bultiņu garumus jūsu aizpildījumā secībā no augšas uz leju. Pēdējā rindā izvadiet MM skaitļus - doto "↓\downarrow" bultiņu garumus jūsu aizpildījumā secībā no kreisās puses uz labo.

Ja prasītais nav iespējams, izvadiet tikai vienu skaitli −1-1.

Apakšuzdevumi un to vērtēšana

#Apakšuzdevuma aprakstsPunkti
1.

Uzdevuma tekstā dotie divi testi

2
2.

N,M≤5N,M \leq 5

8
3.

Kāda viena veida visu bultiņu garumi ir 00

20
4.

N,M≤2000N,M \leq 2000

25
5.

Bez papildu ierobežojumiem

45
Apakšuzdevumu punktu summa = 100.

Piemēri

Ievaddati

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

Izvaddati

2 2 1 0 1 4 0 0 2 2 1 Kopēt kodu

Ievaddati

2 2 2 0 0 0 0 2 Kopēt kodu

Izvaddati

-1 Kopēt kodu

Ievaddati

3 2 2 0 1 1 0 0 1 1 Kopēt kodu

Izvaddati

0 2 1 0 0 1 1 1 Kopēt kodu

1. apakšuzdevuma ievaddati

5 7 0 3 2 2 4 2 5 4 2 1 0 2 1 3 1 1 2 Kopēt kodu
4 9 0 3 2 6 5 1 2 3 1 2 1 0 1 1 2 4 2 Kopēt kodu