Rotaļu dzelzceļš

4
Latvijas Informātikas olimpiādes logo

Uzdevums no 2026. g. LIO valsts kārtas; 8.-10. klasei.

Stāsts

Kārlim Ziemassvētkos uzdāvināja rotaļu dzelzceļu. Šajā rotaļu komplektā ietilpst taisnstūra laukums ar 4×N4 \times N rūtiņām un 4N4N dzelzceļu kauliņi, kurus var novietot laukuma rūtiņās.

Ir tikai divu veidu kauliņi:

  • divu taisnu ceļu krustojums;
  • viena ceļa līkums. Šo veidu kauliņi izskatās šādi:

Krustojuma kauliņš
Krustojuma kauliņš
Līkuma kauliņš
Līkuma kauliņš

Kauliņus var pagriezt jebkurā no četriem virzieniem un novietot dotā laukuma rūtiņās. Uzdāvinātajā komplektā ir tieši KK krustojumu kauliņi un tieši 4N−K4N - K - līkumu kauliņi.

Kārlis uzskata, ka labi ir tikai tādi dzelzceļu tīkli, kur neviens ceļa gals nepaliek nesavienots un kur visi dotie kauliņi ir izmantoti (t.i., laukums ir pilnībā noklāts). Tādos tīklos jebkurš palaistais vilcieniņš nekad nenobrauks no sliedēm. Piemēram, ja N=6N = 6 un K=4K = 4, tad viens no iespējamiem labiem tīkliem ir šāds:

Laba tīkla piemērs
Laba tīkla piemērs

Kārlim interesē, cik pavisam ir dažādi labi dzelzceļu tīkli. Dotajam laukuma izmēram un krustojumu skaitam izrēķiniet kopējo labu tīklu skaitu!

Ievaddati

Pirmajā rindā doti divi veseli nenegatīvi skaitļi NN (2≤N≤50002 \leq N \leq 5000) un KK (0≤K≤4N0 \leq K \leq 4N), laukuma platums un krustojumu kauliņu skaits.

Izvaddati

Izvadiet vienu veselu skaitli - dažādu iespējamo labu dzelzceļu tīklu skaitu. Tā kā atbilde var būt ļoti liela, izvadiet to pēc moduļa 109+710^9+7.

Apakšuzdevumi un to vērtēšana

#Apakšuzdevuma aprakstsPunkti
1.

Uzdevuma tekstā dotie divi testi

2
2.

N≤8N \leq 8

8
3.

N≤16N \leq 16

15
4.

N≤32N \leq 32

30
5.

Bez papildu ierobežojumiem

45
Apakšuzdevumu punktu summa = 100.

Piemēri

Ievaddati

6 4 Kopēt kodu

Izvaddati

3 Kopēt kodu

Ievaddati

3 2 Kopēt kodu

Izvaddati

0 Kopēt kodu

Ievaddati

4 0 Kopēt kodu

Izvaddati

1 Kopēt kodu

1. apakšuzdevuma ievaddati

7 10 Kopēt kodu
8 4 Kopēt kodu