2010 Soal OSN Komputer Sesi 3

  

SOAL SESI 3

OLIMPI ADE SAI NS NASI ONAL I X

BI DANG I NFORMATI KA

  

4 AGUSTUS 2010

MEDAN, SUMATERA UTARA

Selamat Bekerja, Berkompetisi, Jadilah Yang Terbaik!

  

Shuffle

Kode soal:

  osn1013.PAS/ C/ CPP

  Batas Run-time: 1 detik / t est -case

  Batas M emori:

  16 M B

  Pak Dengklek selaku panit ia Olimpiade Sains Nasional 2010, sedang berada di dalam pesaw at menuju M edan. M erasa kurang kerjaan di dalam pesaw at , Pak Dengklek hendak m endengarkan lagu m enggunakan alat pemut ar lagu, ipod shuffle, miliknya. Alat tersebut berisikan M buah lagu kesukaan Pak Dengklek yan g judulnya berbeda satu sam a lain.

  Supaya t idak m em bosankan, alat t ersebut m elakukan algorit m a pengocokan urut an p em ut aran lagu. Dengan algorit m a t ersebut, sebelum m ulai mem ut arkan lagu, alat t ersebut akan membentuk perm ut asi M buah lagu. Set elah perm ut asi t ersebut t erbentuk, baru lah lagu diput arkan sat u persat u. Set elah M buah lagu t ersebut selesai diput ar, jika m asih mau didengarkan, alat t ersebut akan m em bent uk perm ut asi M buah lagu lagi lalu m emainkannya sat u persat u.

  Dasar Pak Dengklek yang unik, m endengarkan lagu saja kurang m engasyikkan bagi dia. Kali ini ia t ert ari k unt uk mem bukt ikan apakah algorit m a pengocokan alat pem ut ar lagunya berjalan dengan benar. Definisi benar dalam hal ini adalah bahwa jika M buah lagu pert am a yang Pak Dengklek dengar m encakup semua lagu yang ada (tidak ada lagu yang tidak diput arkan). Begit u pula dengan M buah lagu berikut nya (set elah

  M buah lagu pert ama), harus mencakup semua lagu yang ada, dan set erusnya.

  Unt uk it u, Pak Dengklek t elah m encat at N buah lagu yang sudah ia dengarkan dari aw al ia m enggunakan alat t ersebut . Pak Dengklek t ahu bahw a agar pembukt iannya m enjadi sederhana, N harus m erupakan kelipatan M . Bantulah Pak Dengklek untuk melakukan pembukt ian akan ipod shuffle-nya.

FORMAT MASUKAN

  Baris pert ama berisi sebuah bilangan bulat M (1 ≤ M ≤ 100) dan N (M N ≤ 1000, N m erupakan kelipat an

  

M ), banyaknya lagu yang t erdapat dalam ipod shuffle milik Pak Dengklek dan banyaknya lagu yang

  didengarkan oleh Pak Dengklek dari aw al secara bert urut an. N baris berikut nya berisi judul lagu yang didengarkan oleh Pak Dengklek berurut an dari yang pert am a ia dengarkan. Set iap judul lagu diwakil kan oleh 4 karakt er huruf kecil ('a' sam pai 'z'), t idak ada spasi di aw al judul at au akhir judul.

FORMAT KELUARAN

  Baris pert am a berisi kat a " BENAR " t anpa t anda kut ip jika dari cat at an Pak Dengklek dapat disimpulkan bahw a algorit m a pengocokan yang dilakukan oleh ipod shuffle m iliknya berjalan dengan benar atau berisi kat a-kat a " BELI BARU " t anpa t anda kut ip jika sebaliknya. Jika baris pert ama berisi " BENAR " , maka t idak perlu ada baris kedua. Namun jika baris pert am a berisi " " , m aka baris kedua berisi sebuah

  BELI BARU

  bilangan bulat yang m enyat akan urut an lagu yang sam pai situ saja sebenarnya sudah dapat m em buat Pak Dengkl ek m enyat akan bahw a ipod shuffle m iliknya tidak berjalan dengan benar.

  CONTOH MASUKAN 1 3 9 kgrc kcgr bsms bsms kcgr kgrc kcgr bsms CONTOH KELUARAN 1 BENAR CONTOH MASUKAN 2 4 8 bgmn idry bgmn idry bgmn idry bgmn idry CONTOH KELUARAN 2

BELI BARU

  3 CONTOH MASUKAN 3 2 2 nkpg plpl CONTOH KELUARAN 3 BENAR PENJELASAN

  Pada contoh pert ama, lagu Keong Racun (berko de kgrc), lagu Kucing Garong (kcgr), dan lagu Bang SM S (bsm s), m asing-masing diput arkan tepat satu kali dalam urut an 1 sampai 3, 4 sam pai 6, dan 7 sam pai 9. Pada cont oh kedua, seharusnya ada 4 lagu, namun Bagimu Negeri (berkode bgm n) sudah diput arkan unt uk kedua kalinya pada urut an ke-3. Pada contoh ket iga, t erdapat 2 lagu, dan sejauh ini 2 lagu t ersebut sudah diput arkan masing-m asing sat u kali.

  

Magic

Kode soal:

  osn1014.PAS/ C/ CPP

  Batas Run-time: 1 detik / t est -case

  Batas M emori:

  16 M B

  Sam bil m enem ani peserta m enunggu w akt u untuk m asu k ruang kompet isi Olimpiade Sains Nasional 2010, Pak Dengklek sebagai panitia yang baik mencoba berint eraksi dengan para pesert a. Kali ini, Pak Dengklek mencoba m enunjukkan kemampuan sulapnya. Ia mem int a salah seorang pesert a unt uk m enuliskan N buah bilangan bulat (x , x , x , ... x ) m asing-masing bernilai ant ara 1 sam pai dengan

  1

  2

3 N

  10 (t erm asuk m ungkin 1 at au 10 itu sendiri). Pak Dengklek berkat a bahwa ia dapat m enebak N buah bilangan bulat t ersebut t anpa ia lihat langsung. Pak Dengklek hanya m em int a pesert a unt uk m engikuti perint ahnya sebagai berikut . Pert ama-t am a, set elah menuliskan N buah bilangan bulat, peserta dimint a unt uk m enuliskan N-1 buah bilangan bulat lain dengan cara menjumlahkan set iap bilangan bulat yang bersebelahan, x ' = x + x +1. Jika

  i i i

  awalnya, pesert a t ersebut m enuliskan x , x , x , ... x , m aka berikutnya ia akan m enulis N-1 buah bilangan

  1

  2

  3 N

  bulat (x ' , x ' , x ' , ... x -1' ). Dan proses t ersebut t erus dilakukan sampai hanya t ersisa sebuah bilangan

  1

  2

  3 N

  bulat. Set elah hanya t ersisa sebuah bilangan bulat , Pak Dengklek m em int a pesert a unt uk m em berit ahunya , x , sam pai x dengan t anda pet ik sebanyak N.

  x

  1 1 '

1 Sebagai contoh, jika pesert a m enuliskan 5 buah bilangan bulat pada mulanya, 3 1 5 4 2, m aka berikut ini adalah proses yang akan dilakukan oleh pesert a.

  3 1 5 4 2 4 6 9 6 10 15 15 25 30

55 Kem udian pesert a hanya perlu m em berit ahukan 3 4 10 25 55 kepada Pak Dengklek agar Pak Dengklek

  dapat m enebak 5 bilangan bulat yang ditulis m ula-mula (3 1 5 4 2). Sebagai ket erangan t am bahan, bilangan 4 di baris kedua pada segit iga bilangan di at as didapat kan dari penjum lahan bilangan 3 d an bilangan 1 di baris pert ama. Bantulah Pak Dengklek untuk melakukan sulapnya.

FORMAT MASUKAN

  Baris pert ama berisi sebuah bilangan bulat N (1 buah bilangan bulat yan g

  ≤ N ≤ 10). Baris kedua berisi N m erupakan x , x ' , sam pai x dengan t anda pet ik sebanyak N.

  1

  1

  1 FORMAT KELUARAN Sebuah baris berisi N buah bilangan bulat yang merupakan x , x , x , ... x .

  1

  2

  3 N

  CONTOH MASUKAN 1

  5 3 4 10 25 55 CONTOH KELUARAN 1 3 1 5 4 2 CONTOH MASUKAN 2

  2 4 8 CONTOH KELUARAN 2 4 4 CONTOH MASUKAN 3

  3 1 3 8 CONTOH KELUARAN 3 1 2 3 PENJELASAN Contoh pert ama sama sepert i contoh yang diberikan pada deskripsi soal.

  

Missile

Kode soal: osn1015.PAS/ C/ CPP

  Batas Run-time: 1 det ik / t est -case

  Ram ainya kasus t erorism e saat ini, m em buat Pak Dengklek mendapat kan ide berikut ini untuk salah satu soal Olimpiade Sains Nasional 2010. Diberikan inform asi lokasi N buah rum ah yang t erlet ak di sepanjang jalan yang diberi nomor ant ara 1 sam pai dengan 100 000 (t erm asuk m ungkin 1 at au 100 000 itu sendiri) yang m enyat akan posisi rumah t ersebut (t erm asuk m ungkin 1 dan 100 000 t ersebut ) dan informasi jangkauan M buah misil yang dapat digunakan unt uk menghancurkan salah sat u rum ah. Sebuah misil hanya dapat m enghancurkan sebuah rum ah yang diberikan informasi nomornya dan berada dalam jangkauan misil t ersebut . Tugasnya cukup sed erhana yakni untuk m enghitung berapa banyak rum ah maksimal yang dapat dihancurkan dengan m enggunakan m aksim al M buah misil t ersebut . Bantulah Pak Dengklek untuk menguji seberapa sulit ide soal t ersebut dengan membuat contoh solusinya.

FORMAT MASUKAN

  Baris pert ama berisi dua buah bilangan bulat N (1 ≤ N ≤ 1 000) dan M (1 ≤ M ≤ 1 000). Baris kedua berisi N buah bilangan bulat dipisahkan spasi yang m erupakan inform asi nomor rum ah -rumah. Tidak ada dua rum ah yang bernomor sam a.

  M baris berikut nya masing-m asing berisi dua buah bilangan bulat A dan B (1 A , B ≤ ≤ 100 000) yang m enyat akan jangkauan awal dan akhir misil t ersebut .

  Pada lim a puluh persen masukan, tidak akan t erdapat dua buah m isil dim ana jangkauan misil pert am a adalah subset dari jangkauan misil kedua. Dengan kat a lain, t idak akan t erdapat dua buah misil dim an a jangkauan kiri misil pert am a lebih kecil dari jangkauan misil kedua sedangkan jangkauan kanan misil pert am a lebih besar dari jangkauan misil kedua.

  FORMAT KELUARAN Sebuah bilangan bulat yang menyat akan banyak rum ah maksimal yang dapat dihancurkan. CONTOH MASUKAN 1 3 3 1 5 10 1 2 9 12 8 11 CONTOH KELUARAN 1

  2

  CONTOH MASUKAN 2 3 3 1 2 5 4 5 1 5 CONTOH KELUARAN 2

  3 CONTOH MASUKAN 3 3 3 1 4 5 1 2 1 5 2 4 CONTOH KELUARAN 3

3 PENJELASAN

  Pada contoh pertam a, misil pert am a (dengan jangkauan 1 2) dapat dipakai untuk m enghancurkan rumah bernomor 1, sedangkan rumah bernomor 5 t idak m ungkin dihancurkan oleh misil kedua (dengan jangkauan 9 12) m aupun ket iga (dengan jangkauan 8 11) karena nom ornya t idak ada di dalam jangkauan kedua m isil t ersebut ; namun salah sat u dari m isil kedua at au ket iga dapat digunakan untuk m enghancurkan rum ah bernomor 10. Pada contoh kedua, m isil pert ama dapat dipakai untuk menghancurkan rumah bernomor 5, m isil kedua unt uk rum ah bernom or 1, dan misil ket iga unt uk rum ah bernom or 2. Sedangkan pada contoh ket iga, misil pert am a dapat dipakai untuk menghancurkan rumah bernom or 1, misil kedua untuk rum ah bernom or 5, dan misil ket iga untuk rum ah bernomor 2.

  

Water fall

Kode soal: osn1016.PAS/ C/ CPP

  Batas Run-time: 1 detik / t est -case

  Sehari sebelum pembagian medali pada Olimpiade Sains Nasional 2010, adalah hari wisat a edukasi. Di salah sat u lokasi wisat a edukasi, Pak Dengklek m elihat suat u air t erjun buat an. Air t erjun itu m engalir sepanjang t ebing yang dapat digam barkan sebagai pet a berbent uk m at riks dengan ukuran V (secara vert ikal) kali H (secara horisont al). Pada t ebing t ersebut dit em pelkan beberapa batu buat an pula (karena air t erjunnya pun buat an). Bat u buatan t ersebut m asing-m asing berbent uk kot ak yang dinyat akan dengan kot ak kiri at as dan kanan bawahnya pada pet a t ebing. Perhat ikan ilust rasi di baw ah ini yang m enggam barkan sebuah air t erjun pada t ebing berukuran 5 kali 5 dari kotak (1,1) sampai dengan kot ak (5,5). Terdapat tiga bat u buat an di posisi (2,3)-(2,4), (4,2)-(5,2), (5,5)- (5,6).

  Air t erjun t ent u t idak lengkap t anpa air itu sendiri, maka air pun perlu dit et eskan dari suat u tit ik pangkal di bagian t ebing. Secara spesifik, air akan mulai ditet eskan dari sebuah kot ak (-1,X). Air t ersebut kem udian m ungkin m enabrak suat u batu. Jika t abrakan itu t erjadi, t et esan air akan pecah menjadi dua (dan kedua t et esan t ersebut sejak it u dianggap sebagai dua t et es air t erpisah; w alau suatu saat m ereka mungkin bert em u, mereka t et ap dianggap dua t et es air yang t erpisah). Salah sat u sat u t et esan air kem udian lanjut m enet es dari sisi kiri batu dan satunya lagi lanjut m enet es dari sisi kanan batu. Hal t ersebut bisa t erjadi berulang-ulang sam pai t et esan air mencapai dasar air t erjun. Set iap kali air m enabrak suat u batu, t imbullah suara bergem ericik. Pak Dengklek yang m erasa bahw a air t erjun akan sem akin indah jika semakin lebat suara gemericiknya, mengharapkan t abrakan ant ara air dan batu t erjadi sebanyak mungkin. Bant ulah Pak Dengklek m enent ukan di kot ak m ana air harus m ulai dit et eskan agar t erjadi sebanyak m ungkin t abrakan ant ara air dan batu. Sepert i dapat dilihat pada ilust rasi di at as, jika Pak Dengklek m enet eskan air dari kot ak (-1, 3) akan t erjadi 3 t abrakan, sedangkan jika dari kot ak (-1, 2) hanya akan t erjadi 1 t abrakan. Tabrakan dengan dasar air t erjun t idak dihitung.

FORMAT MASUKAN

  Baris pert ama berisi t iga buah bilangan bulat, V, H, dan N (1 ≤

  V , H ≤ 500) yang merupakan ukuran peta air

  t erjun secara vert ikal, ukuran pet a air t erjun secara horisont al, dan banyaknya bat u. N baris berikut nya m asing-m asing berisi em pat buah bilangan bulat v , h , v , h (semua berada di dalam jangkauan pet a)

  1

  1

  2

  2

  yang m enyat akan kot ak kiri at as dan kanan bawah dari batu t ersebut . Dijamin tidak ada dua buah bat u yang menempel at au bersent uhan satu sam a lain sehingga air selalu bisa mengalir.

FORMAT KELUARAN

  Sebuah bilangan bulat yang menyat akan banyaknya t abrakan maksimal yang dapat t erjadi ant ara air dan batu jika mulainya t et esan air diatur sedemikian rupa. Bilangan bulat t ersebut dijam in t idak lebih besar dari

  15 10 dan untuk lima puluh persen keluaran bilangan bulat t ersebut dijamin tidak lebih besar dari 5000.

CONTOH MASUKAN

  6 6 3 2 3 2 4 4 2 5 2 5 5 5 6

CONTOH KELUARAN

3 PENJELASAN

  Contoh kasus sesuai dengan ilust rasi pada deskripsi soal, t idak ada t itik penet esan lain yang dapat m enghasilkan t abrakan lebih dari 3 kali.

  

Password

Kode soal: osn1017.PAS/ C/ CPP

  Batas Run-time: 1 detik / t est -case

  Olimpiade Sains Nasional 2010 pun berakhir, Pak Dengklek hendak pulang. Sayangnya, ia lupa password pintu kamarnya. Sebagai inform asi, pintu kamar panitia diberi passw ord khusus untuk alasan keamanan berkas soal dan hasil. Dan lebih uniknya, bukan hanya untuk m asuk, untuk keluar pun pintu kam ar tersebut m em int a passw ord.

  Passw ord dalam hal ini t erdiri dari t epat 4 buah digit , dan set iap digit adalah bilangan bulat ant ara 0 sam pai dengan 9 (t ermasuk m ungkin 0 at au 9 itu sendiri). Jika seseorang salah menebak password t ersebut , maka secara ot om at is passw ord t ersebut akan m engubah diri menjadi selisih mutlak ant ara passw ord sebelumnya dengan t ebakan yang baru diberikan. Perhitungan selisih mutlak ini dilakukan dengan menganggap set iap password adalah sebuah bilangan bulat. Contoh: passw ord semula adalah 0010 dan passw ord t ebakan adalah 0104, maka passw ord pint u kam ar Pak Dengklek selanjutnya berubah m enjadi 0094; perubahan yang sam a akan diperoleh jika password sem ula adalah 0104 dan sebaliknya t ebakan adalah 0010 (ingat selisih mut lak).

  Bantulah Pak Dengklek untuk keluar dari kam arnya sehingga ia dapat pulang.

INFORMASI TIPE SOAL

  Tipe soal sepert i ini biasa disebut " int erakt if". Pada soal ini Anda akan berint eraksi dengan program penguji m elalui st andard input dan st andard out put . Perhat ikan format m asukan dan keluaran di bawah ini dengan seksam a.

FORMAT MASUKAN DAN KELUARAN

  Pada saat program Anda dimulai, mulailah m enebak dengan m encet ak sebuah passw ord yang t erdiri dari empat buah digit bilangan bulat. Selanjutnya, bacalah sebuah kat a yang ant ara lain "t erkunci" at au " pulang". Jika kalimat yang Anda baca adalah "pulang" , t idak perlu ada kelanjut an dari program Anda (dengan kat a lain, program Anda harus berakhir dan t entunya program Anda mendapat kan nilai untuk kasus t ersebut ). Sedangkan jika kalimat yang Anda baca adalah " t erkunci", Anda perlu m enebak lagi dan set erusnya. Jika sam pai 15 kali Anda m enebak belum pernah ada kat a " pulang" , program Anda akan dihentikan secara paksa oleh program penguji dan t ent unya program Anda t idak m endapat kan nilai (at au m endapatkan nilai nol) unt uk kasus t ersebut . Pet unjuk " bacalah" dan " mencet ak" yang dijelaskan di at as dapat Anda lakukan dengan m enggunakan perint ah st andard sepert i w rit e, w rit eln, scanf, print f, dll selayaknya Anda m engerjakan soal biasa. Yang perlu diperhat ikan adalah bahwa unt uk t ipe soal int erakt if sepert i ini, Anda harus selalu memberikan perint ah "fflush(st dout );" (bagi pengguna C/ C++) at au "flush(out put );" (bagi pengguna PASCAL) set iap kali Anda mencet ak keluaran (dengan kat a lain, set iap kali ada perint ah w rit e/ writ eln/ scanf/ print f/ dll, t epat di baw ahnya harus ada perint ah fflush/ flush).

  Berikut ini adalah cont oh kode program dalam bahasa PASCAL yang akan selalu m enebak password 2500 sam pai mendapat kan kat a "pulang":

  var hasil:string; begin hasil:=''; while (hasil<>'pulang') do begin writeln('2500'); flush(output); readln(hasil); end; end.

  Dan berikut ini dalam bahasa C/ C++:

  char hasil[20]; int main(){ strcpy(hasil,""); while (strcmp(hasil,"pulang")<>0){ printf("2500\n"); fflush(stdout); gets(hasil); } return 0; } CONTOH INTERAKSI 1 KELUARAN ANDA - KELUARAN PENGUJI 2500 terkunci 2500 terkunci 2500 pulang CONTOH INTERAKSI 2 KELUARAN ANDA - KELUARAN PENGUJI 2500 terkunci 2500 terkunci 2500 terkunci 2500 terkunci 2500 terkunci 2500 terkunci 2500 terkunci

  2500 terkunci 2500 terkunci 2500 terkunci 2500 terkunci 2500 terkunci 2500 terkunci 2500 terkunci 2500 terkunci program dihentikan secara paksa di titik ini karena telah mencoba menebak sebanyak 15 kali PENJELASAN

  Pada contoh pert ama, passw ord mula-mula adalah 7500, berikut nya berubah m enjadi 5000 (7500 - 2500), berikut nya berubah m enjadi (5000 - 2500), dan akhirnya t erjaw ab dengan benar. Sedangkan pada cont oh kedua, passw ord mula-mula adalah 1500, berikutnya berubah m enjadi 1000 (2500-1500), berikut nya berubah menjadi 1500 lagi (2500-1000), dan set erusnya.