SOAL SESI 3
OLIMPI ADE SAI NS NASI ONAL I X
BI DANG I NFORMATI KA
4 AGUSTUS 2010
MEDAN, SUMATERA UTARA
Shuffle
Kode soal: osn1013.PAS/ C/ CPP
Batas Run-time: 1 det ik / 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 "
BELI BARU
" , m aka baris kedua berisi sebuah3 9
(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
Magic
Kode soal: osn1014.PAS/ C/ CPP
Batas Run-time: 1 det ik / 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 bilangan bulat lain dengan cara menjumlahkan set iap bilangan bulat yang bersebelahan, xi' = xi + xi+1. Jika
awalnya, pesert a t ersebut m enuliskan x1, x2, x3, ... xN, m aka berikutnya ia akan m enulis N-1 buah bilangan
bulat (x1', x2', x3', ... xN-1'). Dan proses t ersebut t erus dilakukan sampai hanya t ersisa sebuah bilangan
bulat. Set elah hanya t ersisa sebuah bilangan bulat , Pak Dengklek m em int a pesert a unt uk m em berit ahunya
x1, x1', sam pai x1 dengan t anda pet ik sebanyak N.
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
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
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
Missile
Kode soal: osn1015.PAS/ C/ CPP
Batas Run-time: 1 det ik / t est -case
Batas M emori: 16 M B
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.
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.
3 3 1 2 5 4 5 1 5 2 4
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,
Water fall
Kode soal: osn1016.PAS/ C/ CPP
Batas Run-time: 1 det ik / t est -case
Batas M emori: 32 M B
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.
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 v1, h1, v2, h2 (semua berada di dalam jangkauan pet a)
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
1015 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
Password
Kode soal: osn1017.PAS/ C/ CPP
Batas Run-time: 1 det ik / t est -case
Batas M emori: 16 M B
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
Berikut ini adalah cont oh kode program dalam bahasa PASCAL yang akan selalu m enebak password 2500
sam pai mendapat kan kat a "pulang":
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