Vienvirziena ielas

ļoti grūts
Latvijas Informātikas olimpiādes logo
Uzdevums no Latvijas 38. (2024./2025. m.g.) informātikas olimpiādes (LIO) valsts kārtas; vecākajai (11.-12. klašu) grupai.

Stāsts

Kādā pilsētā visas ielas ir vienvirziena un katra no tām ir vērsta vai nu ziemeļu (kartē vertikāli uz augšu), vai dienvidu (kartē vertikāli uz leju), vai rietumu (kartē horizontāli pa kreisi), vai austrumu (kartē horizontāli pa labi) virzienā (skat. 1. attēlu).

Kopumā NN ielas ir vērstas ziemeļu vai dienvidu virzienā, bet MM ielas — austrumu vai rietumu virzienā. Ziemeļu/dienvidu ielas ir sanumurētas ar naturāliem skaitļiem no 11 līdz NN pēc kārtas, sākot no kreisās puses uz labo, bet rietumu/austrumu ielas ir sanumurētas ar naturāliem skaitļiem no 11 līdz MM pēc kārtas, sākot no augšas uz leju.

1. attēls: Debespuses
1. attēls: Debespuses

Ielu tīkla piemērs, kur N=7N=7 un M=8M=8, parādīts 2. attēlā.

2. attēls: Ielu tīkla piemērs
2. attēls: Ielu tīkla piemērs

Katru krustojumu varam viennozīmīgi raksturot, norādot ziemeļu/dienvidu un rietumu/austrumu ielu numurus.

Par ielas posmu sauksim ielas nogriezni starp diviem krustojumiem (posmā var būt citi krustojumi), kas vērsts attiecīgās ielas virzienā. Piemēram, (3;8)(1;8)(3; 8) \to (1; 8) ir posms, bet (4;5)(2;5)(4; 5) \to (2; 5) — nav. Nepieciešams noteikt, kāds mazākais ielu posmu skaits jāveic, lai no viena krustojuma tiktu līdz kādam citam, ja tas vispār ir iespējams.

Piemēram, 2. attēlā, lai no krustojuma (1;8)(1; 8) nonāktu krustojumā (7;1)(7; 1), jāveic divi posmi: (1;8)(1;1)(7;1)(1; 8) \to (1; 1) \to (7; 1). Lai no (6;8)(6; 8) nokļūtu (4;4)(4; 4), vajadzēs izmantot, mazākais, trīs posmus: (6;8)(3;8)(3;4)(4;4)(6; 8) \to (3; 8) \to (3; 4) \to (4; 4) vai (6;8)(6;2)(4;2)(4;4)(6; 8) \to (6; 2) \to (4; 2) \to (4; 4), vai vēl kādā citā veidā. Savukārt, viegli pamanīt, ka no neviena cita krustojuma nav iespējams nonākt krustojumā (7;8)(7; 8), jo abas ielas "iet prom" no šī krustojuma.

Uzrakstiet datorprogrammu, kas dotam ceļu tīklam katram no dotajiem krustojumu pāriem nosaka, ar kādu mazāko posmu skaitu no pirmā krustojuma iespējams tikt uz otro, ja tas ir iespējams!

Ievaddati

Pirmajā rindā doti naturāli skaitļi NN (ielu skaits ziemeļu/dienvidu virzienā, N105N \leq 10^5), MM (ielu skaits rietumu/austrumu virzienā, M105M \leq 10^5) un PP (krustojumu pāru skaits, P105P \leq 10^5).

Otrajā rindā kā pirmais dots vesels nenegatīvs skaitlis DD (ielu skaits dienvidu virzienā, 0DN0 \leq D \leq N). Tam seko DD naturāli skaitļi augošā secībā: ielu, kas vērstas dienvidu virzienā, numuri. Pārējās NDN - D ielas ir vērstas ziemeļu virzienā.

Trešajā rindā kā pirmais dots vesels nenegatīvs skaitlis AA (ielu skaits austrumu virzienā, 0AM0 \leq A \leq M). Tam seko AA naturāli skaitļi augošā secībā: ielu, kas vērstas austrumu virzienā, numuri. Pārējās MAM - A ielas ir vērstas rietumu virzienā.

Nākamajās PP rindās katrā ir viena krustojumu pāra apraksts — četri naturāli skaitļi x1x_1, y1y_1, x2x_2, y2y_2 (x1Nx_1 \leq N, y1My_1 \leq M, x2Nx_2 \leq N, y2My_2 \leq M), kur (x1;y1)(x_1; y_1) ir pirmā krustojuma, bet (x2;y2)(x_2; y_2) — otrā krustojuma koordinātas.

Izvaddati

Izvaddatiem jāsatur tieši PP rindas. Katram ii (1iP1 \leq i \leq P) izvaddatu ii-tajā rindā jābūt atbildei par krustojumu pāri, kas ievaddatos dots kā ii-tais pēc kārtas. Ja no pirmā krustojuma iespējams nonākt otrajā, tad atbildei jābūt mazākajam ielu posmu skaitam, kas to ļauj paveikt, vai, ja nokļūt nav iespējams, skaitlim 1-1.

Piemēri

Ievaddati

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

Izvaddati

2 3 -1 1 4 Kopēt kodu

Piezīme:

Atbilst piemēram uzdevuma tekstā.

Ievaddati

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

Izvaddati

2 -1 0 Kopēt kodu

Izpildes resursu ierobežojumi

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

Apakšuzdevumi un to vērtēšana

#Apakšuzdevuma aprakstsPunkti
1.

Jāatrisina uzdevuma tekstā dotais piemērs.

2
2.

Dienvidu ielu nav vai visas ielas vērstas dienvidu virzienā, un austrumu ielu nav vai visas ielas vērstas austrumu virzienā.

8
3.

Ziemeļu/dienvidu ielu skaits nepārsniedz 1010 un austrumu/rietumu ielu skaits nepārsniedz 1010.

20
4.

Krustojumu pāru skaits nepārsniedz 100100.

30
5.

Bez papildu ierobežojumiem.

40
Apakšuzdevumu punktu summa = 100.

1. apakšuzdevuma ievaddati

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