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