hadiah akbar - ioi2017.orgioi2017.org/tasks/day2/prize/prize-idn.pdf · yang harus dibuka, anda...

4
International Olympiad in Informatics 2017 July 28 August 4, 2017 Tehran, Iran Day 2 Tasks prize Indonesian (IDN) Hadiah Akbar Hadiah Akbar adalah sebuah acara permainan televisi terkenal. Anda adalah peserta beruntung yang maju ke babak final. Anda berdiri di depan sebuah baris berisi kotak, dinomori dari hingga dari kiri ke kanan. Setiap kotak berisi sebuah hadiah yang tidak dapat dilihat sampai kotak tersebut dibuka. Terdapat tipe hadiah berbeda. Tipe-tipe tersebut dinomori dari hingga dengan urutan nilai menurun. Hadiah bertipe adalah hadiah yang paling mahal: sebuah berlian. Terdapat tepat satu berlian pada kotak-kotak tersebut. Hadiah bertipe adalah hadiah yang paling murah: sebuah permen lollipop. Untuk membuat permainan lebih menarik, banyaknya hadiah yang lebih murah jauh lebih besar daripada banyaknya hadiah yang lebih mahal. Lebih jelasnya, untuk setiap sedemikian sehingga kita mengetahui hal berikut: jika terdapat hadiah bertipe , terdapat lebih dari hadiah bertipe . Tujuan Anda adalah mendapatkan berlian tersebut. Pada akhir permainan, Anda harus membuka sebuah kotak dan Anda akan mendapatkan hadiah di dalam kotak tersebut. Sebelum memilih kotak yang harus dibuka, Anda dapat menanyakan beberapa pertanyaan kepada Rambod, pembawa acara dari permainan tersebut. Untuk setiap pertanyaan, Anda memilih sebuah kotak . Sebagai jawabannya, Rambod akan memberi Anda sebuah array berisi dua bilangan bulat. Artinya adalah sebagai berikut: Di antara kotak-kotak di sebelah kiri kotak , terdapat tepat kotak yang berisi sebuah hadiah yang lebih mahal daripada hadiah pada kotak . Di antara kotak-kotak di sebelah kanan kotak , terdapat tepat kotak yang berisi sebuah hadiah yang lebih mahal daripada hadiah pada kotak . Sebagai contoh, anggap . Sebagai pertanyaan Anda, Anda memilih kotak . Sebagai tanggapannya, Rambod memberi tahu Anda bahwa . Arti dari tanggapan ini adalah: Tepat satu dari kotak-kotak dan berisi sebuah hadiah yang lebih mahal daripada hadiah pada kotak . Tepat dua dari kotak-kotak berisi sebuah hadiah yang lebih mahal daripada hadiah pada kotak . Tugas Anda adalah mencari kotak yang berisi berlian dengan menanyakan sedikit pertanyaan. Detil implementasi Anda harus mengimplementasikan prosedur berikut ini: Prize (1 of 4)

Upload: dinhtuyen

Post on 08-May-2019

218 views

Category:

Documents


0 download

TRANSCRIPT

InternationalOlympiadinInformatics2017July28–August4,2017Tehran,IranDay2Tasks

prizeIndonesian(IDN)

HadiahAkbarHadiah Akbar adalah sebuah acara permainan televisi terkenal. Anda adalah peserta beruntungyangmajukebabakfinal.Andaberdirididepansebuahbarisberisi kotak,dinomoridari hingga

darikiri kekanan.Setiapkotakberisisebuahhadiahyang tidakdapatdilihatsampaikotaktersebutdibuka.Terdapat tipe hadiah berbeda. Tipe-tipe tersebut dinomori dari hinggadenganurutannilaimenurun.

Hadiahbertipe adalahhadiahyangpalingmahal:sebuahberlian.Terdapattepatsatuberlianpadakotak-kotak tersebut.Hadiahbertipe adalahhadiahyangpalingmurah:sebuahpermen lollipop.Untuk membuat permainan lebih menarik, banyaknya hadiah yang lebih murah jauh lebih besardaripadabanyaknyahadiahyanglebihmahal.Lebihjelasnya,untuksetiap sedemikiansehingga

kitamengetahuihalberikut: jika terdapat hadiahbertipe , terdapat lebihdarihadiahbertipe .

TujuanAndaadalahmendapatkanberlian tersebut.Padaakhir permainan,AndaharusmembukasebuahkotakdanAndaakanmendapatkanhadiahdidalamkotaktersebut.Sebelummemilihkotakyang harus dibuka, Anda dapat menanyakan beberapa pertanyaan kepada Rambod, pembawaacara dari permainan tersebut. Untuk setiap pertanyaan, Andamemilih sebuah kotak . Sebagaijawabannya,RambodakanmemberiAndasebuaharray berisiduabilanganbulat.Artinyaadalahsebagaiberikut:

Di antara kotak-kotak di sebelah kiri kotak , terdapat tepat kotak yang berisi sebuahhadiahyanglebihmahaldaripadahadiahpadakotak .Diantarakotak-kotakdisebelahkanankotak , terdapattepat kotakyangberisisebuahhadiahyanglebihmahaldaripadahadiahpadakotak .

Sebagai contoh, anggap . Sebagai pertanyaan Anda, Anda memilih kotak . Sebagaitanggapannya,RambodmemberitahuAndabahwa .Artidaritanggapaniniadalah:

Tepatsatudarikotak-kotak dan berisi sebuahhadiahyang lebihmahaldaripadahadiahpadakotak .Tepatduadarikotak-kotak berisisebuahhadiahyanglebihmahaldaripadahadiahpadakotak .

TugasAndaadalahmencarikotakyangberisiberliandenganmenanyakansedikitpertanyaan.

Detilimplementasi

Andaharusmengimplementasikanprosedurberikutini:

Prize (1 of 4)

intfind_best(intn)

Prosedurinidipanggiltepatsekaliolehgrader:banyaknyakotak.Prosedurtersebutharusmengembalikannomordarikotakyangberisiberlian,yakni,bilanganbulatunik ( )sedemikiansehinggakotak berisisebuahhadiahbertipe .

Prosedurdiatasdapatmemanggilprosedurberikut:

int[]ask(inti)

:nomordarikotakyangAndapilihuntukditanyakan.Nilaidari harusdiantara dan ,inklusif.Prosedur inimengembalikanarray berisi elemen.Disini, adalahbanyaknyahadiahyanglebihmahalpadakotak-kotakdisebelahkirikotak dan adalahbanyakhadiahyanglebihmahalpadakotak-kotakdisebelahkanankotak .

Contoh

Gradermelakukanpemanggilanprosedurberikut:

find_best(8)

Terdapat kotak. Anggap tipe-tipe hadiah adalah . Seluruh pemanggilanproseduraskyangmungkindannilaikembalianyangsesuaididaftarkandibawahini.

ask(0)mengembalikanask(1)mengembalikanask(2)mengembalikanask(3)mengembalikanask(4)mengembalikanask(5)mengembalikanask(6)mengembalikanask(7)mengembalikan

Pada contoh ini, berlian tersebut berada pada kotak . Maka prosedur find_best harusmengembalikan .

Prize (2 of 4)

Gambardiatasmengilustrasikancontohini.Bagianatasmenunjukkantipedarihadiahpadasetiapkotak.Bagianbawahmengilustrasikanpertanyaanask(2).Kotakyangditandaiberisihadiahyanglebihmahaldaripadahadiahpadakotak .

Batasan

.Tipedarihadiahpadasetiapkotakdiantara dan ,inklusif.Terdapattepatsatuhadiahbertipe .Untuk setiap , jika terdapat hadiah bertipe , terdapat lebih dari hadiahbertipe .

Subsoaldanpenilaian

Padabeberapakasusuji,perilakugraderadalahadaptif.Iniberartidalamkasus-kasusujiini,gradertidakmemilikisebuahbarisanhadiahyangtetap.Akantetapi,jawaban-jawabanyangdiberikanolehgrader dapatbergantungpadapertanyaan-pertanyaanyangditanyakanolehsolusiAnda.Dijaminbahwagrader menjawab sedemikian sehingga setelah setiap jawaban, terdapat setidaknya satubarisanhadiahyangkonsistendenganseluruhjawabanyangdiberikansejauhini.

1. (20poin)Terdapat tepat berliandan permen lollipop (sehingga, ).Andadapatmemanggilproseduraskpalingbanyak kali.

2. (80poin)Tidakadabatasantambahan.

Pada subsoal 2 Anda dapat mendapatkan sebuah nilai parsial. Anggap adalah banyaknyapemanggilanproseduraskmaksimumdiantaraseluruhkasusujipadasubsoalini.Maka,nilaiAndauntuksubsoalinidihitungberdasarkantabelberikutini:

Prize (3 of 4)

Pertanyaan Nilai

(dilaporkandiCMSsebagai'WrongAnswer')

Gradercontoh

Grader contoh tidakadaptif.Melainkan,grader contohhayamembacadanmenggunakansebuaharray tetap berisi tipe-tipe hadiah. Untuk setiap , tipe dari hadiah pada kotakdiberikansebagai .Gradercontohmengharapkanmasukandenganformatberikut:

baris :baris :

Grader contoh mencetak sebuah baris berisi nilai kembalian dari find_best dan banyaknyapemanggilanprosedurask.

Prize (4 of 4)