Nastavak nikad nije dobar koliko i original. Stalno viđamo nastavke koji ne uspeju da razumeju zašto je original toliko voljen i ispadnu dosadni, standardni ili prosto loši. Naravno, mi nastojimo da promenimo to i zato vam predstavljamo silno isčekivani nastavak na kultni klasik prošlogodišnjeg ciklusa: "Zlatnici 2: Električni Bugalu"!
Kralj Mida pred sobom ima brojevnu pravu i na nekih različitih celobrojnih koordinata ima po jedan zlatnik. On igra igru gde u jednom potezu može da premesti jedan zlatnik na susednu poziciju na brojevnoj pravoj (sa ili na ili na ), ali ni u jednom trenutku dva zlatnika ne smeju da se nađu na istom mestu. Mida želi da postavi da se zlatnici nalaze jedan do drugog, ali ne zna još tačno gde. Zato će razmotriti različitih scenarija za svoju igru. Svaki scenario će biti opisan jednim brojem , i u tom scenariju će Midin cilj da bude da premesti zlatnike tako da se nalaze na različitim pozicijama iz skupa pozicija . Svi scenariji su nezavisni, to jest, zlatnici uvek kreću sa istih pozicija.
Kralj Mida je od vas zatražio pomoć da nađete najmanji broj poteza da bi završio igru u svakom scenariju, jer ako bi vam on već znao odgovor na to pitanje, to i ne bi bio nešto dobar zadatak.
Opis ulaza
U prvom redu ulaza se nalazi prirodan broj , broj zlatnika. U drugom redu se nalazi prirodnih brojeva u rastućem poretku, koji predstavljaju početne pozicije zlatnika. U trećem redu se nalazi prirodan broj , broj scenarija. U narednih linija se nalazi po jedan broj kojim su opisani scenariji.
Opis izlaza
Na izlaz ispisati brojeva, gde -ti predstavlja najmanji broj poteza da Mida završi igru u -tom scenariju.
Ograničenja
za svaki upit
Test primeri su podeljeni u 4 disjunktne grupe:
U test primerima vrednim poena: .
U test primerima vrednim poena: , i za svaki scenario.
U test primerima vrednim poena: , to jest početne pozicije zlatnika formiraju aritmetičku progresiju.
U test primerima vrednim poena: Bez dodatnih ograničenja.
Primeri
Primer 1
Ulaz
2
2 4
2
5
2
Izlaz
5
1
Objašnjenje
U prvom scenariju, drugi zlatnik možemo da premestimo mesta udesno (sa na ), a prvi zlatnik mesta udesno (sa na ) i time smo završili igru. U drugom scenariju, dovolljno je premestiti drugi zlatnik jedno mesto ulevo.
Autor
Tekst i test primeri
Analiza rеšenja
Testiranje
Pavle Martinović
Pavle Martinović
Mladen Puzić
Aleksa Plavšić
Rešenje za :
Imamo samo jedan zlatnik koji je u svakom scenariju potrebno dovesti na odgovarajuću poziciju. Da bismo sa pozicije došli do pozicije potrebno je poteza. Vremenska složenost je .
Rešenje za i :
Pošto nije dozvoljeno da se dva zlatnika nalaze na istoj poziciji, takođe nije moguće da se dva zlatnika mimoiđu. Samim tim, zlatnik sa pozicije će završiti na poziciji , zlatnik sa pozicije na , ..., zlatnik sa pozicije na . Pošto će u svakom trenutku postojati zlatnik koji može da se približi svojoj krajnjoj poziciji, rešenje je , odnosno . Pošto su i mali, možemo ručno izračunati ovu sumu za svaki scenario. Vremenska složenost je .
Rešenje za :
Primetimo da važi ako , a u suprotnom. Pošto je niz rastući, za prvih nekoliko (potencijalno nula) žetona važiće prvi slučaj, dok
će za ostale važiti drugi slučaj. Označimo sa indeks poslednjeg žetona za koji važi (ako ne postoji takav žeton onda , inače ). Primetimo da onda važi . Odnosno rešenje je . Kada znamo , sume iz formule možemo naći prefiksnim sumama. Sve ovo u stvari znači da ćemo nekoliko prvih novčića pomerati udesno, dok ćemo ostale pomerati ulevo.
Ostalo nam je samo da nađemo . Ako , možemo uzeti i (ako ). Tražimo najveće tako da važi , tj. . Važi . Samim tim važi , gde je ceo deo od . Vremenska složenost je .
Glavno rešenje:
Jedina razlika ovog rešenja i rešenja za prethodnu grupu test primera je nalaženje . Za poena potrebno je da koristimo binarnu pretragu nad nizom (tražimo prvo za koje je to veće od ). Vremenska složenost je .