utešna nagrada (prize) - ioi2017.orgioi2017.org/tasks/day2/prize/prize-srb.pdf · takmičenju...
TRANSCRIPT
InternationalOlympiadinInformatics2017July28–August4,2017Tehran,IranDay2Tasks
prizeSerbian(SRB)
Utešnanagrada(prize)NakonzavršeneBalkanijadeizprogramiranjazasvetakmičarekojinisuuspelidaosvojemedaljunatakmičenjuorganizovana jenagradna igra "Utešnanagrada"gde takmičari imajušansudaosvojebaremneštoineodukućipraznihruku.
Tom prilikom je predMomčiloda postavljen niz od kutija, označenih od do , s leva nadesno.Svakakutija sadrži tačno jednunagradu, kojaostajenepoznatadokse takutijaneotvori.Postoji tipovanagrada.Tipovisunumerisaniod do poopadajućemredosleduvrednosti.
Nagradatipa jenajskuplja:dijamantskeštikle.Postojetačnojednedijamantskeštikleukutijama.Nagrada tipa jenajjeftinija: lizalica.Kakobi igrabilauzbudljivija,broj jeftinijihnagrada jemnogovećiodbrojaskupljihnagrada.Preciznije,zasvako zakoje znamosledeće:Akoimanagradatipa ,ondaimastrogovišeod nagradatipa .
Momčilodovcilj jedaosvojidijamantskeštikle.Nakraju igreMomčilodotvara jednukutiju iosvajanagradu koja se nalazi u njoj. Pre nego što odabere koju će kutiju otvoriti, ima priliku da Tinadi,voditeljki kviza, postavi neka pitanja. Za svako pitanje odabira neku kutiju . Kao svoj odgovor,Tinadaćedatiniz kojisadržidvacelabroja.Njihovoznačenjejesledeće:
Među svim kutijama levo od kutije ima tačno kutija koje sadrže skuplju nagradu odnagradeukutiji .Međusvimkutijamadesnoodkutije ima tačno kutija koje sadrže skuplju nagraduodnagradeukutiji .
Naprimer,pretpostavimodaje .Zasvojepitanjeodabraojekutiju .Tinadinodgovorje.Značenjeovogodgovoraje:
Tačnojednaodkutija i sadržinagradukojajeskupljaodnagradeukutiji .Tačnodveodkutija sadrženagradukojajeskupljaodnagradeukutiji .
TvojzadatakjedapomognešMomčilodudanađekutijukojasadržidijamantskeštiklepostavljajućimalibrojpitanja.
Detaljiimplementacije
Potrebnojedaimplementirašsledećufunkciju:
intfind_best(intn)
Ovaprocedurasepozivatačnojednomodstranegrejdera.
Prize (1 of 4)
:brojkutija.Ova funkcija treba da vrati oznaku kutije koja sadrži dijamantske štikle, tj. ceo broj (
)takavdakutija sadržinagradutipa .
Ovafunkcijamožedapozivasledećufunkciju:
int[]ask(inti)
:oznakakutijezakojupostavljašpitanje.Vrednost morabitiizmeđu i ,uključujući itebrojeve.Ovafunkcijavraćaniz sa elementa.Ovdeje brojskupljihnagradaukutijamalevoodkutije ,a jebrojskupljihnagradaukutijamadesnoodkutije .
Primer
Graderpozivasledećuproceduru:
find_best(8)
Postoji kutija. Pretpostavimo da su tipovi nagrada . Svi mogući poziviprocedureaskiodgovarajućiodgovorisunavedeniispod.
ask(0)vraćaask(1)vraćaask(2)vraćaask(3)vraćaask(4)vraćaask(5)vraćaask(6)vraćaask(7)vraća
Uovomprimeru,dijamantskeštiklesuukutiji ,tezbogtogaprocedurafind_besttrebadavrati.
Prize (2 of 4)
Slika iznadprikazujeovajprimer(dijamantskeštiklesuzgodnooznačenedijamantom).Gornjideoslikeprikazujetipovenagradausvakojkutiji.Donjideoslikeprikazujeupitask(2).Čekiranekutijesadrževrednijenagradeodnagradekojasenalaziukutiji .
Ograničenja
.Tipovinagradausvakojodkutijasuizmeđu i ,uključujućitebrojeve.Postojitačnojednanagradatipa .Zasve ,ukolikopostoji nagradatipa ,ondapostojistrogovišeod nagradatipa .
Podzadaciibodovanje
U nekim test primerima grejdermože da se ponaša adaptivno. To znači da u tim test primerimagrejder nema fiksan niz nagrada, nego odgovor grejderamože da zavisi od pitanja kojemu tvojprogram postavi. Garantuje se da će grejder odgovarati tako da nakon svakog odgovora postojibaremjedanniznagradakonzistentansasvimodgovorimadotada.
1. (20 bodova) Postoji tačno dijamantske štikole i lizalica ( ). Možes pozvatiproceduruasknajviše puta.
2. (80bodova)Nemadodatnihograničenja.
Upodzadatku2možesdadobiješparcijalnebodove.Nekaje najvećibrojpozivaprocedureaskmeđu svim test primerimau ovompodzadatku.Onda će se tvoj broj bodova za ovaj podzadatakračunatipremasledećojtabeli:
Prize (3 of 4)
Brojpitanja Bodovi
(prikazanouCMS-ukao'WrongAnswer')
Primergrejdera
Primergrejderanijeadaptivan.Umestotoga,primergrejderasamoučitavaikoristifiksanniztipovanagrada .Zasve ,tipnagradeukutiji jedatsa .Primergrejderaočekujeulazusledećemformatu:
linija :linija :
Primer grejdera ispisuje jednu liniju koja sadrži vraćenu vrednost od funkcije find_best i brojpozivaprocedureask.
Prize (4 of 4)