Editorial for Upoznavanje
Submitting an official solution before solving the problem yourself is a bannable offence.
Reći ćemo da su komšije čija je pozicija manja od Miloševe pozicije komšije levo, a komšije čija je pozicija veća od Miloševe pozicije komšije desno. Ako su sve komšije levo od Miloša, onda će najbrže upoznati sve komšije tako što krene ulevo i upoznaje komšije u redosledu u kome stiže do svakog od njih. U tom slučaju će vreme upoznavanja biti razlika Miloševe pozicije i pozicije krajnje levog komšije. Slično, ako su sve komšije desno od Miloša, onda kreće udesno i upoznaje komšije u redosledu u kome stiže do svakog od njih. Tada će vreme upoznavanja biti razlika između pozicije krajnje desnog komšije i Miloševe pozicije. Ostaje da rešimo slučaj kada postoji bar jedan komšija levo i bar jedan komšija desno.
Pokažimo da Miloš u optimalnom postupku (redosledu) upoznavanja sa prijateljima ne može proći dva ili više puta "pored" svoje kuće. Neka su komšije sortirane prema svojoj poziciji, tj. tako da je None a_1 \leqslant a_2 \leqslant a_3 \leqslant \dotsb \leqslant a_n. None
Neka je u optimalnom postupku upoznavanja, Miloš išao na desno do komšije , zatim se "vratio" do komšije
, a potom od komšije
ponovo krenuo udesno do komšije
(
).
Tada je vreme upoznavanja tih komšija iznosilo
None
(a_{r_1} – x) + (a_{r_1} – a_l) + (a_{r_2} – a_{l}).
None
Međutim, ako bi Miloš išao prvo ulevo do komšije
, a nakon toga udesno do komšije
, upoznao bi isti skup komšija, ali bi vreme upoznavanja iznosilo
None
(x – a_l) + (a_{r_2} – a_{l}).
None
Lako se pokazuje da važi:
None
(a_{r_1} – x) + (a_{r_1} – a_l) + (a_{r_2} – a_{l}) >
(a_{r_1} – a_l) + (a_{r_2} – a_{r_1}) >
(x – a_l) + (a_{r_2} – a_{r_1}).
None
Na sličan način bi se postupilo da je išao ulevo do komšije
, zatim udesno do
i nakon toga ponovo ulevo do komšije
(
). Taj raspored bi se mogao zameniti rasporedom u kome bi išao udesno do komšije
, a zatim ulevo do komšije
(a vreme upoznavanja za taj raspored je manje).
Prema tome, ako postoji bar jedan komšija levo i bar jedan komšija desno, izdvajaju se dva redosleda za upoznavanje komšija:
- Miloš može ići ulevo do krajnje levog komšije, a zatim udesno do krajnje desnog komšije, ili
- Miloš može ići udesno do krajnje desnog komšije, a zatim ulevo do krajnje levog komšije.
Vreme upoznavanja u prvoj varijanti je
None
x-a_1 + a_n – a_1,
None
a u drugoj varijanti je
None
a_n – x + a_n – a_1.
None
Minimalno vreme upoznavanja je
None
\min{ x-a_1 + a_n – a_1, a_n-x + a_n – a_1,} = a_n – a_1 + \min{x-a_1, a_n – x}.
None
Za kraj primetimo da niz nije neophodno sortirati jer je su nam potrebne samo vrednosti prvog i poslednjeg elementa sortiranog niza, a to su zapravo najmanji i najveći element niza.
Vremenska složenost ovog rešenja je
.
Comments