Berkas Kompetisi Soal Hari 2 Olimpiade Sains Nasional XI Bidang Komputer/Informatika 2-7 September 2012, Jakarta www.tokilearning.org www.siswapsma.org Bundel Soal Hari 2 OSN XI Bidang Informatika BARISAN BILANGAN Batas Waktu 1 detik Batas Memori 32 MB Diberikan sebuah barisan bilangan yang terdiri dari N buah bilangan bulat: a1, a2, ..., aN. Sebanyak tepat K kali, Pak Dengklek akan mengambil dua bilangan bersebelahan, menghapus mereka, kemudian mengganti keduanya dengan bilangan baru yang merupakan hasil penjumlahan kedua bilangan tersebut. Sebagai contoh, pada barisan bilangan 1, 2, 3, 4, 5, Pak Dengklek dapat mengambil bilangan bulat ke-2 dan 3 dan menggantinya menjadi: 1, 5, 4, 5. Bantulah Pak Dengklek agar barisan bilangan yang dihasilkan memiliki selisih nilai maksimum dan nilai minimum sekecil mungkin! Format Masukan Baris pertama berisi string "Kasus #X" (tanpa tanda kutip) dengan X menyatakan nomor kasus uji. Baris kedua terdiri dari tepat dua buah bilangan N dan K yang dipisahkan sebuah spasi. Baris ketiga dan sekaligus baris terakhir masukan terdiri dari N buah bilangan bulat yang masing-masing terpisah tepat sebuah spasi yang menyatakan barisan Pak Dengklek, sesuai urutannya. Format Keluaran Baris pertama dan satu-satunya keluaran berisi selisih terkecil yang mungkin dari maksimum dan minimum. Contoh Masukan Kasus #101 6 3 5 1 1 1 3 2 Halaman 1 Bundel Soal Hari 2 OSN XI Bidang Informatika Contoh Keluaran 2 Penjelasan Contoh Pada contoh di atas, solusi optimal didapat sebagai berikut: Gabungkan bilangan kedua dan ketiga menjadi: 5 2 1 3 2. Gabungkan bilangan kedua dan ketiga menjadi: 5 3 3 2. Gabungkan kedua bilangan terakhir menjadi: 5 3 5. Nilai maksimumnya adalah 5, nilai minimumnya adalah 3, dan selisihnya adalah 2. Sehingga keluaran untuk masukan ini adalah 2. Penjelasan Subsoal Subsoal 1 (X poin): download kasus uji Subsoal 2 (X poin): download kasus uji Subsoal 3 (X poin): 1 ≤ K < N ≤ 10, K ≤ 5, 1 ≤ ai ≤ 106. Subsoal 4 (X poin): 1 ≤ K < N ≤ 20, 1 ≤ ai ≤ 106. Subsoal 5 (X poin): 1 ≤ K < N ≤ 40, 1 ≤ ai ≤ 2. Subsoal 6 (X poin): 1 ≤ K < N ≤ 40, 1 ≤ ai ≤ 106. Halaman 2 Bundel Soal Hari 2 OSN XI Bidang Informatika BATAS NILAI Batas Waktu 1 detik Batas Memori 64 MB Pada sebuah olimpiade, panitia ingin memilih N dari M peserta tingkat provinsi untuk berpartisipasi di tingkat nasional. Terdapat Q provinsi di negara tersebut, dinomori dari 1 hingga Q. Misalkan K adalah maksimal banyak peserta tingkat nasional yang berasal dari suatu provinsi. Koordinator olimpiade ini, Pak Dengklek, ingin memilih K buah bilangan bulat a1, a2, ..., aK sebagai passing grade sedemikian sehingga: 1. Seluruh peserta dengan peringkat provinsi i, akan lolos jika dan hanya jika nilainya tidak kurang dari ai. 2. Apabila pada provinsi X peserta dengan peringkat i lolos, maka semua peserta dengan peringkat j < i harus lolos. Dengan kata lain, apabila nilai peserta dengan peringkat i tidak kurang dari ai, nilai peserta dengan peringkat j < i tidak boleh kurang dari aj. 3. Untuk memastikan kualitas, passing grade juga harus dipilih sedemikian sehingga T peserta terbaik secara nasional lolos. 4. Banyak peserta yang lolos ke tingkat nasional tepat N. Tidak kurang, tidak lebih. Dan tentu saja, N peserta ini belum tentu merupakan N peserta terbaik secara nasional (perhatikan kriteria lain untuk pemilihan passing grade). 5. Selisih antara banyak peserta yang lolos di provinsi yang memiliki peserta lolos terbanyak dengan banyak peserta yang lolos di provinsi yang memiliki peserta lolos tersedikit harus sekecil mungkin. Tentu saja, peserta yang mendapatkan peringkat lebih tinggi (peringkat dengan bilangan lebih kecil) adalah peserta dengan nilai lebih besar. Bantulah panitia olimpiade tersebut untuk menentukan passing grade yang memenuhi semua batasan di atas. Format Masukan Baris pertama berisi string "Kasus #X" (tanpa tanda kutip) dengan X menyatakan nomor kasus uji. Halaman 3 Bundel Soal Hari 2 OSN XI Bidang Informatika Baris kedua berisi empat buah bilangan bulat dipisahkan spasi N, M, Q, dan T (T ≤ N ≤ M) sesuai deskripsi soal. Baris ke-i dari M baris berikutnya berisi dua buah bilangan bulat dipisahkan spasi, Si (0 ≤ Si ≤ 100000) dan Pi (1 ≤ Pi ≤ Q) yang masing-masing menyatakan nilai peserta ke-i dan provinsi asal peserta tersebut. Dipastikan tidak ada dua peserta yang memiliki nilai yang persis sama. Selain itu, masingmasing provinsi pasti memiliki setidaknya seorang peserta. Format Keluaran Sebanyak K buah bilangan bulat pada sebuah baris yang masing-masing dipisahkan tepat sebuah spasi, yang merupakan a1, a2, ..., aK secara berturut-turut. Masing-masing ai harus berada di antara 0 dan 100001, inklusif. Apabila ada lebih dari satu kemungkinan keluaran, keluarkan yang mana saja. Contoh Masukan Kasus #0 6 8 3 5 30 2 70 1 50 1 60 3 80 3 10 1 40 3 20 2 Contoh Keluaran 30 25 30 Halaman 4 Bundel Soal Hari 2 OSN XI Bidang Informatika Penjelasan Perhatikan bahwa data pada contoh kasus di atas sama dengan data di bawah ini. Provinsi 1: 70, 50, 10 Provinsi 2: 30, 20 Provinsi 3: 80, 60, 40 Angka yang dicetak tebal adalah nilai peserta yang masuk T terbaik secara nasional. Untuk masing-masing provinsi, nilai diurutkan berdasarkan peringkat, dari peringkat 1, 2, 3, hingga seterusnya. Pada contoh di atas, K = 3, yakni banyaknya peserta pada provinsi 1 ataupun 3. Pada solusi contoh masukan, karena a1 = 30, maka peringkat pertama di semua provinsi lolos. Karena a2 = 25, hanya peringkat 2 pada provinsi 2 dan provinsi 3 yang lolos. Karena a3 = 30, hanya peringkat 3 pada provinsi 3 yang lolos. Perhatikan bahwa solusi ini memenuhi semua ketentuan soal. Selisih antara banyak peserta yang lolos di provinsi yang memiliki peserta lolos terbanyak (provinsi 3, yang memiliki 3 peserta lolos) dengan banyak peserta yang lolos di provinsi yang memiliki peserta lolos tersedikit (provinsi 2, yang hanya memiliki 1 peserta lolos) adalah 3 - 1 = 2, yakni nilai terkecil yang mungkin. Penjelasan Subsoal Subsoal 1 (10 poin): download kasus uji. Subsoal 2 (10 poin): download kasus uji. Subsoal 3 (15 poin): 1 ≤ N ≤ M ≤ 100, 1 ≤ Q ≤ 100, T = 0. Subsoal 4 (15 poin): 1 ≤ T ≤ N ≤ M ≤ 50, 1 ≤ Q ≤ 5, 1 ≤ K ≤ min(10, M). Subsoal 5 (15 poin): 1 ≤ T ≤ N ≤ M ≤ 100, 1 ≤ Q ≤ 100, 1 ≤ K ≤ M. Subsoal 6 (35 poin): 1 ≤ T ≤ N ≤ M ≤ 10000, 1 ≤ Q ≤ 100, 1 ≤ K ≤ M. Halaman 5 Bundel Soal Hari 2 OSN XI Bidang Informatika MENGGAMBAR Batas Waktu Interaktif (1 detik) Batas Memori 16 MB Pak Dengklek sedang belajar menggambar bersama M ekor bebeknya. Gambar Pak Dengklek sangatlah unik, dia menggambar menggunakan titik pada bidang N x N (dimana N adalah kelipatan pangkat 2 [2y = N, y bil bulat positif], N ≤ 256). Warna pada gambar Pak Dengklek hanya ada 2 (angka 0 dan angka 1). Pak Dengklek menggambar dengan salah satu dari tiga cara sebagai berikut: 1. Mewarnai seluruh bidang gambar dengan 0. 2. Mewarnai seluruh bidang gambar dengan 1. 3. Membagi menjadi empat bagian gambar sama luas, dimana satu bagian diwarnai dengan 0, satu bagian lagi diwarnai dengan 1, dan kedua bagian sisanya dianggap sebagai bidang baru untuk digambar. Catatan: langkah no.3 hanya berlaku untuk bagian dengan jumlah titik lebih dari 1 Karena para bebek tidak mengetahui gambar Pak Dengklek, mereka berusaha menebak gambar aslinya. Untuk setiap tebakan Pak Dengklek akan memberitahu banyak titik dengan warna yang berbeda. Karena menggambar sangatlah melelahkan, maka seekor bebek hanya bisa menggambar 1 kali saja. Bantulah para bebek mengatur strategi untuk menebak gambar yang dibuat Pak Dengklek. Format Interaksi Pada awalnya grader memberikan nilai N. Untuk setiap jawaban yang diberikan, grader akan mengeluarkan selisihnya. Jika program anda menebak lebih dari jumlah bebek, program akan langsung diberhentikan. Halaman 6 Bundel Soal Hari 2 OSN XI Contoh Interaksi Penjelasan Subsoal Subsoal 1..3: [masing-masing 7 poin] 1 ≤ N ≤ 8 M = 1000000 <subsoal 1>, <subsoal 2>, <subsoal 3> Subsoal 4: [15 poin] 1 ≤ N ≤ 8 M = 7000 Subsoal 5: [15 poin] 1 ≤ N ≤ 256 M = 70000 Halaman 7 Bidang Informatika Bundel Soal Hari 2 OSN XI Bidang Informatika Subsoal 6: [24 poin] 1 ≤ N ≤ 256 M = 4100 Subsoal 7: [25 poin] 1 ≤ N ≤ 256 M = 1100 Peringatan Jika program anda menebak lebih dari M kali, program anda akan langsung dihentikan Halaman 8 Bundel Soal Hari 2 OSN XI Bidang Informatika MEMBACA Batas Waktu 1 detik Batas Memori 32 MB Pak Dengklek sedang mengajarkan bebeknya membaca huruf-huruf. Begitu cintanya Pak Dengklek akan Tim Olimpiade Komputer Indonesia, huruf-huruf pertama yang ia ajarkan pada bebeknya adalah T, O, K, dan I. Walau tampak mudah, bebek Pak Dengklek mengalami kesulitan untuk memahami beberapa bentuk yang serupa tapi tak sama yang menyatakan suatu huruf yang sama. Sebagai contoh, beberapa bentuk yang serupa tapi tak sama berikut ini sama-sama menyatakan “TOKI”. Pada persoalan ini, satu huruf dinyatakan oleh satu matriks berukuran N x N. Masing-masing sel pada matriks bernilai 1 atau 0. Setiap sel bernilai 1 adalah bagian dari huruf yang bersangkutan, sedangkan setiap sel bernilai 0 adalah background atau latar dimana huruf dituliskan. Sebagai contoh, matriks berukuran 10 x 10 berikut ini menyatakan huruf T. 1111111111 1111111111 0000110000 0000110000 0000110000 0000110000 0000110000 0000110000 0000110000 0000110000 Jika setiap sel pada matriks diubah menjadi piksel pada gambar, maka gambar berikut ekuivalen dengan matriks di atas. Bantulah bebek Pak Dengklek mengenali huruf T, O, K, dan I dengan membaca matriks seperti yang dijelaskan di atas dan menebak huruf yang dinyatakan. Untuk setiap kasus, dijamin bahwa: Huruf T pada dasarnya terdiri dari satu garis vertikal dan satu garis horizontal pada bagian paling atas, Huruf O pada dasarnya terdiri dari titik-titik yang membentuk satu garis melingkar, Halaman 9 Bundel Soal Hari 2 OSN XI Bidang Informatika Huruf K pada dasarnya terdiri dari satu garis vertikal, satu garis diagonal dari tengah garis vertikal ke kanan atas, satu garis diagonal dari tengah garis vertikal ke kanan bawah, Huruf I pada dasarnya terdiri dari satu garis vertikal saja, Matriks pada masukan selalu menyatakan suatu huruf di antara T, O, K, atau I (tidak mungkin menyatakan huruf lain atau tidak menyatakan suatu huruf apapun sama sekali), Dengan definisi a adalah indeks baris paling atas yang memiliki digit 1, b adalah indeks baris paling bawah yang memiliki digit 1, c adalah indeks kolom paling kiri yang memiliki digit 1, d adalah indeks baris paling kanan yang memiliki digit 1, (abs(a-b)*abs(c-d))/(N*N) ≥ 25%, Jika setiap sel pada matriks diubah menjadi piksel pada gambar, maka gambar yang ekuivalen dengan matriks tersebut akan dapat dikenali dengan mudah oleh manusia. Format Masukan Baris pertama berisi string "Kasus #X" (tanpa tanda kutip) dengan X menyatakan nomor kasus uji. Baris kedua berisi sebuah bilangan bulat N (20 ≤ N ≤ 200) yang menyatakan ukuran dari matriks. N baris berikutnya masing-masing berisi karakter ‘1’ atau ‘0’ (tanpa tanda kutip). Format Keluaran Sebuah karakter, salah satu di antara ‘T’, ‘O’, ‘K’, ‘I’ (tanpa tanda kutip). Halaman 10 Bundel Soal Hari 2 OSN XI Contoh Masukan Kasus #0 20 00111111111111111100 01111111111111111110 11100000000000000111 11000000000000000011 11000000000000000011 11000000000000000011 11000000000000000011 11000000000000000011 11000000000000000011 11000000000000000011 11000000000000000011 11000000000000000011 11000000000000000011 11000000000000000011 11000000000000000011 11000000000000000011 11000000000000000011 11100000000000000111 01111111111111111110 00111111111111111100 Contoh Keluaran O Halaman 11 Bidang Informatika Bundel Soal Hari 2 OSN XI Bidang Informatika Penjelasan Subsoal Subsoal 1 (18 poin) : download kasus uji. Subsoal 2 (19 poin) : Seluruh sel bernilai 1 membentuk suatu bentuk tanpa potongan. Ada sel bernilai 1 pada baris pertama, baris terakhir, kolom pertama, dan kolom terakhir. Subsoal 3 (20 poin) : Seluruh sel bernilai 1 membentuk suatu bentuk tanpa potongan. Subsoal 4 (21 poin) : Ada sel bernilai 1 pada baris pertama, baris terakhir, kolom pertama, dan kolom terakhir. Subsoal 5 (22 poin) : Tidak ada tambahan batasan selain yang dijelaskan di atas. Halaman 12