Janko se sprema za odlazak na finale svetskog prvenstva u fudbalu 2022. godine. Međutim, kako su svi navijači pohrlili na utakmicu, u Dohi su velike gužve. Da stvari budu gore, Jankov hotel je na suprotnom kraju grada u odnosu na stadion.
Poznato je da Doha izgleda kao matrica dimenzija . Polje označava polje u -tom redu i -toj koloni. Jankov hotel se nalazi na polju , dok se stadion nalazi na polju . Na svakom polju matrice (uključujući i polja na kojem su hotel i stadion) se nalazi neka grupa navijača - na polju ima tačno navijača.
Janko sa polja isključivo može da ode na polje ili na polje (ukoliko je odgovarajuće polje na koje bi došao unutar matrice). Pošto Janko ne voli gužve, odlučio je da svoj put isplanira tako da na njemu susretne najmanji broj navijača (gde je broj navijača koje je sreo suma svih po poljima kroz koja je prošao na putu do stadiona, uključujući i polja hotela i stadiona).
Čim je Janko napravio plan, čuo je na vestima da će tačno jedno polje biti blokirano za javnost, te on neće moći da prođe kroz njega na putu do stadiona. Janko nažalost nije siguran o kojem polju je reč, te vas moli da odgovorite na različitih scenarija. U -tom scenariju, Janko želi da zna koliko će navijača morati da sretne, ako polje bude blokirano.
Opis ulaza
U prvom redu standardnog ulaza, nalaze se dva cela broja, i , koji predstavljaju dimenzije Dohe.
Linija od narednih linija sadrži celih brojeva, od kojih -ti predstavlja - broj navijača na polju .
Naredna linija sadrži jedan ceo broj, , koji predstavlja broj različitih scenarija koje Janko razmatra.
Narednih linija sadrže po dva broja, i , koji opisuju polje koje je blokirano u -tom scenariju.
Opis izlaza
Na standardni izlaz ispisati redova, u -tom od njih potrebno je ispisati jedan ceo broj, koji predstavlja minimalan broj navijača koje će Janko sresti na putu do stadiona, ukoliko bude blokirano polje .
Primer 1
Ulaz
3 4
1 2 3 4
5 6 7 8
9 10 11 12
2
1 2
2 4
Izlaz
39
36
Objašnjenje primera
prvi scenario: Ukoliko je blokirano polje , optimalan put za Janka je . Na tom putu, on će ukupno sresti navijača.
drugi scenario: Ukoliko je blokirano polje , optimalan put za Janka je . Na tom putu, on će ukupno sresti navijača.
Ograničenja
.
.
.
.
.
.
Garantuje se da hotel i stadion nikada neće biti blokirani za javnost i da će Janko uvek moći da stigne od hotela do stadiona.
Test primeri su podeljeni u pet disjunktnih grupa:
U testovima vrednim 15 poena: .
U testovima vrednim 10 poena: , .
U testovima vrednim 15 poena: , .
U testovima vrednim 20 poena: .
U testovima vrednim 40 poena: Bez dodatnih ograničenja.
Autor
Tekst i test primeri
Analiza rеšenja
Testiranje
Aleksa Milisavljević i Mladen Puzić
Aleksa Milisavljević
Mladen Puzić
Dragan Urošević
Dalje u rešenjima ćemo reći da se krećemo na dole ukoliko se pomeramo sa polja na polje , u suprotnom se krećemo udesno.
Rešenje kada
Na tačno jednoj poziciji ćemo se pomeriti na dole, svi ostali potezi biće udesno. Označimo sa broj navijača koje sretnemo ukoliko se u koloni pomerimo na dole. Ovaj niz možemo izračunati koristeći prefiksni zbir nad gornjim redom i sufiksni zbir nad donjim redom.
Ukoliko je blokirano neko polje u prvom redu, npr. , onda se moramo pomeriti na dole pre -te kolone, pa je rešenje . Ukoliko je blokirano neko polje u drugom redu, npr. , onda se moramo pomeriti na dole posle -te kolone, pa je rešenje .
Vremenska složenost je , a memorijska .
Rešenje kada ,
Rešenje možemo dobiti brute force metodom, odnosno isprobavanjem svih mogućih puteva od prvog do poslednjeg polja, za svako blokirano polje. Takvih puteva postoji (imamo ukupno koraka, od kojih biramo da budu usmereni na dole). Sve puteve možemo proveriti rekurzijom.
Vremenska složenost je , a memorijska .
Rešenje kada ,
Za svako blokirano polje, koristićemo dinamičko programiranje - izračunaćemo , najmanji broj navijača koje moramo da sretnemo na putu od do , ako ne posetimo trenutno blokirano polje. Jasno je da važi i , s tim što prilikom računanja uvek preskačemo polja koja su van matrice i trenutno blokirano polje. Rešenje se onda nalazi u .
Vremenska složenost je , a memorijska .
Rešenje kada
Kao u prethodnom rešenju, izračunajmo niz - najmanji broj navijača koje moramo da sretnemo na putu od do , i slično - najmanji broj navijača koje moramo da sretnemo na putu od do .
Recimo da blokiramo polje . Posmatrajmo sva polja za koja važi . Možemo videti da se zapravo sva ova polja nalaze na istoj dijagonali, kao i da na svakom putu od do prolazimo kroz tačno jedno od ovih polja.
Ovo nam govori da, kako bismo garantovali da ne prolazimo kroz polje , dovoljno je da garantujemo da prolazimo kroz neko drugo polje na ovoj dijagonali. Možemo naći put sa najmanje navijača koji prolazi kroz polje sa .
Možemo, dakle, proći kroz sva polja na dijagonali blokiranog polja i videti za koje dobijamo najmanji put. Bitno je primetiti da je broj polja na toj dijagonali najviše , što je manje od .
Vremenska složenost je , a memorijska .
Glavno rešenje
Uradimo sve isto kao u prethodnom rešenju, sem što ćemo efikasnije naći minimum na dijagonali bez jednog polja. To ćemo uraditi tako što ćemo čuvati prefiksni i sufiksni minimum za svaku dijagonalu. Za blokirano uzećemo minimum od prefiksa do i sufiksa od .