Kvadrātveida putekļsūcējs

Kvadrātveida putekļsūcējs

vidēji grūts
Latvijas Informātikas olimpiādes logo
Uzdevums no Latvijas 37. (2023./2024. m. g.) informātikas olimpiādes (LIO) skolas kārtas.

Stāsts

Krišjānis ir uzkonstruējis kvadrātveida putekļsūcēju (saīsināti – KP), kas ir neaizstājams palīgs viņa darbnīcas uzkopšanā. KP atmiņā darbnīcas grīda tiek attēlota kā N×MN \times M rūtiņu laukums, kurā pats KP aizņem K×KK \times K rūtiņas. Laukumā dažas rūtiņas var būt bīstamas (netērēsim laiku, mēģinot noskaidrot, ko tieši tas nozīmē), un KP nekad nedrīkst nonākt situācijā, ka KP atrašanās vietā vairāk nekā puse tā noklāto rūtiņu ir bīstamas. Ir zināma KP sākotnējā atrašanās vieta un īpaša rūtiņa, kura noteikti jāuzkopj, t.i., KP jāuzbrauc uz tās. Vienā solī KP var pārvietoties par vienu rūtiņu horizontālā vai vertikālā virzienā, neizejot no laukuma robežām. Nepieciešams noteikt, ar kādu mazāko soļu skaitu KP var nonākt situācijā, ka tas uzkopj īpašo rūtiņu.

Piemēram, 1. attēlā parādītajā kartē N=5N = 5, M=9M = 9, K=3K = 3 ar „A“ apzīmēta KP sākotnējās atrašanās vietas kreisā augšējā rūtiņa, bet ar „B“ – īpašā rūtiņa. Bīstamās rūtiņas apzīmētas ar „X“.

1. attēls: Laukuma piemērs
1. attēls: Laukuma piemērs

Šajā gadījumā īpašo rūtiņu iespējams uzkopt ātrākais 10 soļos, veicot 2. attēlā parādīto maršrutu.

2. attēls: Īsākais maršruts
2. attēls: Īsākais maršruts

Uzrakstiet datorprogrammu, kas dotam laukuma aprakstam nosaka, ar kādu mazāko soļu skaitu KP no sākuma pozīcijas var nonākt līdz īpašās rūtiņas uzkopšanai!

Ievaddati

Ievaddatu pirmajā rindā dotas trīs naturālu skaitļu – laukuma rindu skaits NN (2N)(2 \leq N), laukuma kolonnu skaits MM (2M)(2 \leq M) un KP malas garums rūtiņās KK (1Kmin(N,M))(1 \leq K \leq \min(N, M)). Tiek garantēts, ka NM106N \cdot M \leq 10^6. Starp katriem diviem blakus skaitļiem ievaddatos ir tukšumzīme.

Nākamajās NN ievaddatu rindās dots laukuma apraksts. Katrā rindā ir tieši MM simboli un katram ii (1iN)(1 \leq i \leq N) un jj (1jM)(1 \leq j \leq M) simbols ievaddatu (i+1)(i + 1)-ās rindas jj-tajā kolonnā atbilst laukuma ii-tās rindas jj-tās kolonnas rūtiņas saturam un var būt:

  • . - parasta rūtiņa
  • X - bīstama rūtiņa
  • A - KP sākuma atrašanās vietas kreisā augšējā stūra rūtiņa. Šī vienmēr ir parasta rūtiņa un uzdota korekti – t.i., KP pilnībā ietilpst laukumā.
  • B - īpašā rūtiņa. Šī vienmēr ir parasta rūtiņa.

Izvaddati

Izvaddatu vienīgajā rindā jābūt veselam skaitlim – mazākajam soļu skaitam, kas ļauj no sākuma pozīcijas nonākt līdz īpašās rūtiņas uzkopšanai, vai -1, ja derīgs maršruts neeksistē. Īpašā rūtiņa ir uzkopta tad, ja KP nonāk pozīcijā, kur tas noklāj īpašo rūtiņu. Ievērojiet, ka nekādi nav noteikts, kurai KP rūtiņai uzkopšanas brīdī jāatbilst īpašajai rūtiņai!

Piemēri

Ievaddati

5 9 3 A....X..B ..X..X.X. .XXX.XX.. X.X.X..X. ...XX.... Kopēt kodu

Izvaddati

10 Kopēt kodu

Izpildes resursu ierobežojumi

CPU izpildes laiks uz testu: 0.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

3
2.

NM103NM \leq 10^3

48
3.

N1000N \leq 1000 un M1000M \leq 1000

28
4.

Bez papildu ierobežojumiem

21
Apakšuzdevumu punktu summa = 100.

1. apakšuzdevuma ievaddati

5 5 3 A.X.. X.B.X ....X XX... X.XXX Kopēt kodu
6 3 1 ... XA. .X. X.. B.. ... Kopēt kodu
6 4 2 X... .AXX X..X .X.X XXXX X.BX Kopēt kodu