Editorial for Upoznavanje


Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.

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 {r_1}, zatim se "vratio" do komšije l, a potom od komšije {l} ponovo krenuo udesno do komšije {r_2} (r_2 > r_1). 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 l, a nakon toga udesno do komšije {r_2}, 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 {l_1}, zatim udesno do r i nakon toga ponovo ulevo do komšije {l_2} (l_2 < l_1). Taj raspored bi se mogao zameniti rasporedom u kome bi išao udesno do komšije r, a zatim ulevo do komšije {l_2} (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 a 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 O(n).


Comments

There are no comments at the moment.