Editorial for Krompir
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
Analiza
Posmatrajmo slučajeve gde je broj početnih polja () mali, kao što i sugeriše prvi podzadatak. Jasno je da je za
rešenje
(samo polja u odgovarajućoj vrsti i koloni) bez obzira na to gde se početno polje nalazi. Za
lako se uočava da je dovoljno posmatrati samo dva slučaja:
ukoliko početna polja nisu u istoj vrsti ni koloni, tada je rešenje
jer zauzimamo po dve vrste i kolone, ali, u njihovom preseku se nalaze 4 polja koja brojimo 2 puta pa otud oduzimanje;
ukoliko su početna polja su u istoj vrsti ili koloni tada imamo vrstu/kolonu manje pa je rešenje
.
Za drugi podzadatak je dovoljno odraditi direktnu simulaciju -- za svako početno polje markirati sva polja neke matrice
oblika
i
i na kraju prebrojati markirana polja u matrici. Vremenska složenost ovog pristupa je
a memorijska
pa je jasno da će nam za ostale podzadatke trebati bolji algoritam.
Na osnovu prethodne diskusije, prirodno se nameće činjenica da rešenje ne zavisi od tačnih položaja početnih polja već samo od njihovog međusobnog položaja, a prevashodno od toga da li su u istoj vrsti/koloni. Neka je broj vrsta u kojima se nalazi bar jedan krompir a
- broj kolona u kojima se nalazi bar jedan krompir. Jasno, na svakom polju ovih
vrsta i
kolona će izrasti krompir dok će ostala polja ostati prazna. Prema tome, ukupno imamo
pokrivenih vrsta/kolona koje međusobno imaju ukupno
presečnih polja koja ne smemo da računamo dva puta, pa je ukupan broj polja sa krompirima jednak
.

Dakle, dovoljno je odrediti vrednosti i
. Broj
je jednak broju različitih elemenata u nizu
(analogno za
i niz
) a ovo je poznat problem koji se može uraditi sortiranjem niza
i upoređivanjem uzastopnih elemenata. Složenost ovog pristupa je složenost soritranja niza dužine
a za treći podzadatak je dovoljno koristiti i algoritme sortiranja složenosti
.
Za kompletno rešenje zadatka nije neophodno sortiranje; dovoljno je primetiti da su vrednosti niza celi brojevi iz segmenta
pa možemo koristiti pomoćni logički niz
dužine
i za svako
markirati element
. Na kraju, broj markiranih elementa je upravo broj
(slično i za drugi pomoćni niz i broj
). Vremenska složenost ovog pristupa je
uz
memorije, i nosi maksimalan broj poena.
Comments