Soal Seleksi OSN DKI 2003

advertisement
Soal 1. Mine Sweeper
(Nama File : MINE.PAS)
(Soal ini harus diselesaikan dengan menggunakan rekursi, walaupun soal ini dapat pula
diselesaikan dengan metode lain !!)
Minesweeper adalah salah satu permainan yang terkenal dari Windows. Pada game ini, kita menjadi
seorang penjinak ranjau yang harus menandai semua ranjau yang ada atau membuka semua tempat yang
tidak ada ranjaunya. Pada masalah ini, pemain tidak ditugaskan untuk menandau ranjau. Tempat yang
tidak ada ranjaunya berisi sebuah angka. Angka itu adalah jumlah dari ranjau yang ada di sekitar tempat
itu. Definisi dari sekitar adalah 8 arah dari tempat itu.
Anda diminta untuk membuat sebuah program, di mana diberikan tempat – tempat ranjau berada, dan
urutan langkah – langkah yang dilakukan pemain, untuk mencetak hasil akhir setelah pemain itu
melakukan langkah itu. Jika ternyata dalam salah satu langkah pemain itu mati (membuka bom), maka
langkah – langkah selanjutnya tidak boleh dimainkan dan di tempat langkah terakhir itu diisi dengan
karakter ‘x’. Bila tempat yang ditunjuk pemain mempunyai nilai 0, maka 8 arah dari tempat itu harus
langsung dibuka, dan bila ada yang 0 dari 8 arah itu, 8 arah dari tempat bernilai 0 itu dibuka lagi, demikian
seterusnya.
INPUT (MINE.IN)
Baris pertama dari input berisi 2 integer m dan n yang merupakan jumlah baris dan jumlah kolom dari
permainan itu. M baris berikutnya berisi n karakter yang menyatakan peta dari permainan. Tiap karakter
dapat bernilai ‘-‘ untuk tempat kosong, dan ‘b’ untuk tempat berisi bom. Nomor baris dimulai dari 1 sampai
dengan m dan nomor kolom dimulai dari 1 sampai dengan n. Baris selanjutnya berisi sebuah integer k. k
baris berikutnya berisi 2 integer a dan b yang merupakan langkah yang dilakukan pemain di mana a adalah
baris dari atas dan b adalah kolom dari kiri.
OUTPUT (MINE.OUT)
Anda diminta untuk mencetak tampilan permainan setelah pemain menjalankan langkah – langkah yang
disebutkan dalam input.
SAMPLE
mine.in :
mine.out :
77
bb----------------b-----b
--b-b-----------b-1
17
Soal Seleksi TOKI DKI 7 Juni 2003
bb10000
-210000
-100011
b21212b
--b-b-----------b—
Batasan
1 < m,n <= 100
1 < a <= m
1 < b <= n
1
Soal 2. Lomba Lari Bebek
(Nama File : LARI.PAS)
Pak Dengklek mengadakan Lomba Lari Bebek 2003 di peternakannya. Dia mengundang N (1 <= N <= 20)
bebek untuk berpartisipasi dalam pertandingan. Sebagai insentif, ia menjanjikan M (1 <= M <= 20) hadiah
untuk para pemenang lomba. Karena alat pengukur waktu yang digunakan masih agak subjektif (yaitu
mata Pak Dengklek), adalah mungkin untuk mendapatkan beberapa bebek finis di urutan yang sama alias
seri.
Istri Pak Dengklek membantunya dengan membuat sertifikat-sertifikat untuk para pemenang. Tiba-tiba
saja, ia ingin tahu ada berapa banyak cara untuk membagi hadiah-hadiah tersebut. Menurut buku
peraturan yang telah Pak Dengklek tulis, bila terjadi seri di antara K bebek, maka tiap K bebek akan
menerima hadiah ke-X bila ada tepat X-1 bebek yang finis lebih dahulu dari K bebek tersebut.
FORMAT MASUKAN (LARI.IN)
Sebuah baris dengan 2 bilangan bulat yang dipisahkan oleh spasi: N dan M.
CONTOH MASUKAN
32
FORMAT KELUARAN (LARI.OUT)
Sebuah baris dengan sebuah bilangan bulat yang menyatakan banyak cara yang mungkin untuk
menghadiahkan M hadiah ke sapi-sapi.
CONTOH KELUARAN
13
Penjelasan
Misal ada tiga bebek dengan nama Kwek, Kwik dan Kwok, maka cara-cara untuk membagi hadiah adalah:
- Kwek, Kwik, Kwok
: Hadiah pertama
- Kwek, Kwik
: Hadiah pertama
- Kwek, Kwok
: Hadiah pertama
- Kwik, Kwok
: Hadiah pertama
- Kwek
: Hadiah pertama,
Kwik
: Hadiah kedua
- Kwek
: Hadiah pertama,
Kwok
: Hadiah kedua
- Kwik
: Hadiah pertama,
Kwek
: Hadiah kedua
- Kwik
: Hadiah pertama,
Kwok
: Hadiah kedua
- Kwok
: Hadiah pertama,
Kwek
: Hadiah kedua
- Kwok
: Hadiah pertama,
Kwek
: Hadiah kedua
- Kwek
: Hadiah pertama,
Kwik, Kwok
: Hadiah kedua
- Kwik
: Hadiah pertama,
Kwek, Kwok
: Hadiah kedua
- Kwok
: Hadiah pertama,
Kwek, Kwik
: Hadiah kedua
Soal Seleksi TOKI DKI 7 Juni 2003
2
Soal 3. Tempat Tidur Bebek
(Nama File : TIDUR.PAS)
Pak Dengklek punya N (1 <= N <= 2500) bebek yang tidur di sebuah kandang besar dengan K kamar yang
dinomori 0 sampai dengan K-1. Bebek ke-i dinomori secara unik dengan nomor Si (1 <= Si <= 1000000).
Setiap bebek tahu di mana untuk tidur karena dia tidur di kamar nomor S i mod K. Tentu saja, para bebek
tidak mau membagi tempatnya untuk tidur.
Diberikan sebuah himpunan bebek dan nomornya, tentukan nilai minimum K sedemikian sehingga tidak
ada 2 bebek yang tidur di kamar yang sama.
FORMAT MASUKAN (TIDUR.IN)
Baris 1
Baris 2..N+1
: Sebuah bilangan bulat untuk N
: Sebuah bilangan bulat yang menyatakan nomor bebek
CONTOH MASUKAN
5
4
6
9
10
13
FORMAT KELUARAN (TIDUR.OUT)
Sebuah baris dengan nilai minimum K pada baris tersebut.
CONTOH KELUARAN
8
Soal Seleksi TOKI DKI 7 Juni 2003
3
Download