the big prize - ioi 2017ioi2017.org/tasks/day2/prize/prize-rou.pdf · răspuns există cel puțin o...

4
International Olympiad in Informatics 2017 July 28 August 4, 2017 Tehran, Iran Day 2 Tasks prize Romanian (ROU) The Big Prize Jocul "Marele premiu" este un renumit show de televiziune. Sunteți norocosul participant care s-a calificat în runda finală. Stați în fața unui rând de cutii, numerotate de la stânga la dreapta de la până la . Fiecare cutie conține un premiu care nu poate fi văzut până când cutia nu este deschisă. Există diferite tipuri de premii. Tipurile de premii sunt numerotate de la la în ordinea descrescătoare a valorii. Premiul de tipul este cel mai scump: un diamant. Există un singur diamant în cutii. Premiul de tip este cel mai ieftin: o acadea. Pentru a face jocul cât mai captivant, numărul premiilor ieftine este mult mai mare decât numărul premiilor scumpe. Mai exact, pentru toate cu se știe: dacă există premii de tip , atunci există strict mai mult decât premii de tip t. Aveți scopul să câștigați diamantul. La sfârșitul jocului va trebui să deschideți cutia și să luați premiul din cutie. Înainte de a deschide cutia aleasă trebuie să îl întrebați pe Rambod, gazda show- ului, câteva întrebări. Pentru fiecare întrebare, veți alege o cutie . Ca răspuns, Rambod vă va oferi un șir care conține doi întregi. Semnificația acestor întregi este: Printre cutiile din stânga cutiei sunt exact cutii care conțin premii mai scumpe ca premiul din cutia . Printre cutiile din dreapta cutiei sunt exact cutii care conțin premii mai scumpe ca premiul din cutia . De exemplu, presupunem că și alegeti cutia ca întrebare pusă. Ca răspuns Rambod vă șirul . Semnificația acestui răspuns este: Exact una din cutiile și conține un premiu mai scump ca premiul din cutia . Exact două din cutiile conțin premii mai scumpe ca premiul din cutia . Sarcina voastră este să găsiți cutia care conține diamantul punând un număr mic de întrebări. Detalii de implementare Trebuie să implementați următoarea procedură: int find_best(int n) Această procedură este apelată exact o singură data de către evaluator. : numărul de cutii. Această procedură returnează numărul cutiei care conține diamantul, adică un întreg unic ( Prize (1 of 4)

Upload: others

Post on 31-Jan-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

  • InternationalOlympiadinInformatics2017July28–August4,2017Tehran,IranDay2Tasks

    prizeRomanian(ROU)

    TheBigPrizeJocul "Marelepremiu"esteun renumitshowde televiziune.Sunteținorocosulparticipantcares-acalificatînrundafinală.Stațiînfațaunuirândde cutii,numerotatedelastângaladreaptadelapână la . Fiecare cutie conține un premiu care nu poate fi văzut până când cutia nu estedeschisă.Există diferite tipuridepremii.Tipurile depremii sunt numerotatede la la înordineadescrescătoareavalorii.

    Premiuldetipul estecelmaiscump:undiamant.Existăunsingurdiamantîncutii.Premiuldetipeste celmai ieftin: oacadea.Pentrua face jocul câtmai captivant, numărul premiilor ieftineestemultmaimaredecâtnumărulpremiilorscumpe.Maiexact,pentrutoate cu seștie:dacăexistă premiidetip ,atunciexistăstrictmaimultdecât premiidetipt.

    Aveți scopul să câștigați diamantul. La sfârșitul jocului va trebui să deschideți cutia și să luațipremiuldincutie.ÎnaintedeadeschidecutiaaleasătrebuiesăîlîntrebațipeRambod,gazdashow-ului,câtevaîntrebări.Pentrufiecareîntrebare,vețialegeocutie .Carăspuns,Rambodvăvaoferiunșir careconținedoiîntregi.Semnificațiaacestorîntregieste:

    Printrecutiiledinstângacutiei suntexact cutiicareconținpremiimaiscumpecapremiuldincutia .Printre cutiile din dreapta cutiei sunt exact cutii care conțin premii mai scumpe capremiuldincutia .

    Deexemplu,presupunemcă șialegeticutia caîntrebarepusă.CarăspunsRambodvădășirul .Semnificațiaacestuirăspunseste:

    Exactunadincutiile și conțineunpremiumaiscumpcapremiuldincutia .Exactdouădincutiile conținpremiimaiscumpecapremiuldincutia .

    Sarcinavoastrăestesăgăsițicutiacareconținediamantulpunândunnumărmicdeîntrebări.

    Detaliideimplementare

    Trebuiesăimplementațiurmătoareaprocedură:

    intfind_best(intn)

    Aceastăprocedurăesteapelatăexactosingurădatadecătreevaluator.:număruldecutii.

    Aceastăprocedurăreturneazănumărulcutieicareconținediamantul,adicăunîntregunic (

    Prize (1 of 4)

  • )astfelîncâtcutia conținepremiuldetip .

    Procedurademaisuspoateapelaurmătoareaprocedură:

    int[]ask(inti)

    :numărulcutieidesprecarevrețisă întrebați.Valoarea lui trebuiesă fie între și ,inclusiv.Aceastăprocedurăreturneazăunșir cu elemente. estenumărulpremiilormaiscumpedincutiiledinstângacutiei și estenumărulpremiilormaiscumpedincutiiledindreaptacutiei .

    Exemplu

    Evaluatorulexecutăurmătorulapelalprocedurii:

    find_best(8)

    Există cutii. Presupunemcăpremiile sunt de următoarele tipuri . Toatecazurileposibiledeapelaproceduriiaskșirespectivvalorilereturnatesunt:

    ask(0)returneazăask(1)returneazăask(2)returneazăask(3)returneazăask(4)returneazăask(5)returneazăask(6)returneazăask(7)returnează

    Înacestexemplu,diamantulesteîncutia .Deci,procedurafind_besttrebuiesăreturneze .

    Prize (2 of 4)

  • Exemplul este ilustrat în figurademai sus.Parteadesusarată valorilepremiilor în fiecare cutie.Parteade josarată interogareaask(2).Cutiilemarcateconținpremiimaiscumpedecâtcutiacunumărul .

    Restricțiișiprecizări

    .Tipulpremiilorînfiecarecutieesteîntre și ,inclusiv.Existăunsingurpremiudetipul .Pentrutoate ,dacăexistă premiidetipul ,atunciexistăstrictmaimultdepremiidetipul .

    Subtask-urișipunctaj

    Înuneletestecomportamentulevaluatoruluiesteadaptiv.Adică,înacesteteste,evaluatorulnuareosecvență fixădepremii. În schimb, răspunsurile oferite de evaluator poate depindede întrebăriletransmisedesoluțiavoastră.Segaranteazăcăevaluatorul răspundeînașafel încâtdupăfiecarerăspunsexistăcelpuținosecvențăconsistentădepremiicutoaterăspunsuriledatepânăacum.

    1. (20 puncte) Există exact diamant și acadele (prin urmare, ). Puteți apelaproceduraaskdecelmult ori.

    2. (80puncte)Fărărestricțiiadiționale.

    Însubtask-ul2putețiobțineunscorparțial.Fie numărulmaximdeapeluriaproceduriiaskpentrutoate testele din acest subtask. Punctajul pentru acest subtask este calculat conform următoruluitabel:

    Prize (3 of 4)

  • Întrebări Punctaj

    (raportatînCMSca'WrongAnswer')

    Evaluatorlocal

    Evaluatorul localnuesteadaptiv. Înschimb,elciteșteșiutilizeazăunșir fix de tipuridepremii.Pentru toate , tipul premiului din cutia este dat ca . Formatul intrării pentruevaluatorullocaleste:

    linia :linia :

    Evaluatorullocalafișeazăosingurăliniecareconținevaloareareturnatădefind_bestșinumăruldeapeluriaproceduriiask.

    Prize (4 of 4)