Berkas Soal Penyisihan Competitive Programming Tingkat SMA
CompFest 2013
Kontributor: • Ashar Fuadi • Gede Wahyu Adi Pramana • William Gozali
1
Saluran Televisi Batas Waktu : 1 detik Batas Memori: 32 MB Di negara Pak Chanek, terdapat banyak salu ran televisi. Salu ran televisi itu biasa disimpan televisi dengan nomor referensi tertentu . Misalnya, jika Pak Chanek menyimpan salu ran bernama CTV (Chanek TV) pada nomor referensi 8, dia dapat menekan tombol di remote angka 8 u ntu k membu at televisinya menampilkan salu ran CTV. Televisi Pak Chanek dapat menampu ng 100 bu ah salu ran, dengan nomor referensi 0 sampai 99. Pada su atu hari, Pak Chanek mendapati bahwa televisinya sedang menyiarkan salu ran CTV. Sayangnya, Pak Chanek tidak tahu salu ran itu tersimpan pada nomor referensi berapa. Untu k mengetahu inya, Pak Chanek akan melaku kan salah satu dari du a cara beriku t: 1. Menekan tombol "next", sehingga televisinya menampilkan salu ran yang tersimpan pada nomor referensi sesu dahnya. Misalkan saat ini televisi menyiarkan salu ran pada nomor referensi 10, maka menekan tombol ini akan membu at televisi menampilkan salu ran pada nomor referensi 11. Sebagai catatan, sesu dah nomor 99 adalah 0. 2. Menekan tombol "prev", sehingga televisinya menampilkan salu ran yang tersimpan pada nomor referensi sebelu mnya. Misalkan saat ini televisi menyiarkan salu ran pada nomor referensi 10, maka menekan tombol ini akan membu at televisi menampilkan salu ran pada nomor referensi 9. Sebagai catatan, sebelu m nomor 0 adalah 99. Sesaat setelah salu ran televisi beru bah, nomor referensinya akan mu ncu l di layar televisi. Tentu nya sesu dah itu Pak Chanek dapat mengetahu i nomor referensi berapa yang menyimpan salu ran CTV. Misalkan setelah ditekan "next" kemu dian yang ditampilkan adalah nomor 17. Artinya, salu ran CTV berada pada nomor referensi 16. Tu gas Anda adalah membantu Pak Chanek menentu kan nomor referensi berapa yang menyimpan salu ran CTV sesu dah dilaku kan salah satu cara di atas!
Format Masukan Baris pertama berisi sebu ah bilangan bu lat T, yaitu banyaknya kasu s u ji. Untu k setiap kasu s u ji: Baris pertama berisi sebu ah string "next" atau "prev" yang menu nju kkan operasi yang dilaku kan Pak Chanek. Baris beriku tnya berisi sebu ah bilangan bu lat X yang menyatakan nomor referensi yang ditu nju kkan televisi setelah Pak Chanek melaku kan operasi di atasnya.
Format Keluaran Untu k setiap kasu s, kelu arkan nomor referensi yang menyimpan salu ran CTV.
2
Contoh Masukan 3 next 3 next 18 prev 91
Contoh Keluaran 2 17 92
Batasan • 1 ≤ T ≤ 200 • 0 ≤ X ≤ 99
3
Kelereng Batas Waktu : 2 detik Batas Memori: 32 MB Saat diselenggarakan CompFest, Pak Chanek merasa ditantang oleh sebu ah permainan yang disediakan di Playgrou nd. Pada permainan tersebu t, setiap peserta diberikan K bu tir kelereng dan sebu ah kotak yang berisikan N bu tir kelereng. Setiap kelereng memiliki motif yang saling berbeda-beda. Untu k bisa memenangkan hadiah menarik, Pak Chanek haru s menjawab sebu ah pertanyaan. Pertanyaan itu berbu nyi: Bila anda memiliki K bu tir kelereng di tangan dan N bu tir kelereng di kotak, berapa banyak kemu ngkinan barisan kelereng yang dapat dibentu k? Sebagai informasi, barisan kelereng adalah barisan yang berisikan Q bu tir kelereng. Membu at barisan kelereng sama sekali tidak su lit, dan dimu lai dengan sebu ah barisan kosong yang tidak mengandu ng satu pu n kelereng. Selama barisan itu belu m berisikan Q bu tir kelereng, yang haru s dilaku kan adalah: 1. Pilih sebu tir kelereng dari kelereng-kelereng yang ada di tangan. 2. Bila barisan saat ini sama sekali belu m mengandu ng kelereng, tempatkan kelereng yang baru dipilih sebagai kelereng pertama pada barisan. Namu n, apabila barisan saat ini su dah mengandu ng beberapa kelereng, maka tempatkan kelereng yang baru dipilih pada paling depan barisan, paling belakang, atau di antara du a kelereng yang bersebelahan dalam barisan. 3. Bila kelereng yang ada di tangan su dah habis, pindahkan semu a kelereng yang ada di kotak ke tangan. Posisi kelereng-kelereng pada barisan dapat diberi nomor dari 1 sampai Q. Du a bu ah barisan kelereng dianggap berbeda apabila setidaknya terdapat sebu ah bilangan i (1 ≤ i ≤ Q) sedemikian sehingga kelereng ke-i pada barisan yang satu memiliki motif yang berbeda dengan kelereng ke-i pada barisan lainnya. Karena Pak Chanek tidak mampu menjawabnya, maka bantu lah dia u ntu k menemu kan banyaknya cara menyu su n barisan kelereng!
Format Masukan Baris pertama berisi sebu ah bilangan bu lat T, yaitu banyaknya kasu s u ji. Untu k setiap kasu s u ji: Baris pertama berisi tiga bilangan bu lat K, N, dan Q.
Format Keluaran Untu k setiap kasu s u ji, kelu arkan sebu ah bilangan yang meru pakan jawaban yang dibu tu hkan Pak Chanek. Untu k mempermu dah, cu ku p kelu arkan sisa bagi jawabannya dengan 10.007 (10 4+7).
4
Contoh Masukan 2 3 2 2 1 2 3
Contoh Keluaran 6 6
Penjelasan Untu k kasu s pertama, kelereng di kotak tidak boleh digu nakan karena cu ku p dengan kelereng di tangan, kita su dah bisa membentu k barisan kelereng. Bila kelereng di tangan dinomori dan dinyatakan dalam {1, 2, 3}, maka keenam barisan yang mu ngkin adalah: 1. [1, 2] 2. [1, 3] 3. [2, 1] 4. [2, 3] 5. [3, 1] 6. [3, 2] Untu k kasu s kedu a, kelereng di tangan saja tidak cu ku p u ntu k membu at barisan kelereng. Oleh karena itu kelereng di kotak haru s dipergu nakan. Misalkan kelereng di tangan adalah {1}, dan kelereng di kotak adalah {A, B}. Keenam barisan yang mu ngkin adalah: 1. [1, A, B] 2. [1, B, A] 3. [A, 1, B] 4. [A, B, 1] 5. [B, 1, A] 6. [B, A, 1]
Batasan • 1 ≤ T ≤ 20 • 1 ≤ K, N, Q ≤ 1.000 • N+K≥Q
5
Sapi Pemalu Batas Waktu : 2 detik Batas Memori: 32 MB Usaha su su perah sapi akhir-akhir ini sedang hangat. Untu k meningkatkan perekonomian, Pak Chanek ju ga ingin berternak sapi. Pak Chanek memiliki N kandang sapi, dinomori dari 1, 2, 3, dan seteru snya sampai N. Kandang-kandang ini berjejer, artinya kandang nomor x berada di sebelah kanan kandang nomor x-1 (u ntu k x dari 2 sampai N). Setiap kandang dapat berisi maksimal seekor sapi, dan setiap sapi haru s ditempatkan di dalam kandang (atau mereka akan diganggu hewan liar). Pak Chanek ingin mengadopsi seju mlah sapi yang menghasilkan su su berku alitas tinggi. Akan tetapi, sapi itu memiliki sebu ah kebu tu han khu su s, yaitu ru angan u ntu k menyendiri. Bila seekor sapi ditempatkan di kandang bernomor x, maka tidak boleh ada sapi lainnya di kandang y sehingga selisih y dengan x lebih kecil dari K. Mengetahu i keadaan tersebu t, Pak Chanek su dah menjadikan M kandangnya menjadi kandang spesial, yaitu kandang nomor a1, a2, ..., aM. Disebu t spesial karena kandang ini sangat tertu tu p, sehingga sapi di dalamnya mau pu n di lu arnya tidak dapat merasakan kehadiran satu sama lain. Oleh karena itu , atu ran yang dijelaskan di paragraf sebelu mnya tidak berlaku bagi sapi yang ada di dalam kandang spesial. Demikian pu la dengan sapi di kandang biasa; bila dia ada di kandang bernomor x, dia tidak berkeberatan ketika ada sapi di kandang spesial bernomor y meskipu n selisih y dengan x lebih kecil dari K. Sekarang Pak Chanek ingin tahu , berapa maksimal banyaknya sapi yang bisa dia adopsi dengan memenu hi kebu tu han khu su s sapi-sapi tersebu t. Bantu lah dia!
Format Masukan Baris pertama berisi sebu ah bilangan bu lat T, yaitu banyaknya kasu s u ji. Untu k setiap kasu s u ji: Baris pertama berisi tiga bilangan bu lat, N, M, dan K. M baris beriku tnya sebu ah bilangan bu lat. Bilangan di baris ke-i ini adalah ai.
Format Keluaran Untu k setiap kasu s u ji, cetak sebu ah bilangan yang menyatakan berapa maksimal banyaknya sapi yang bisa diadopsi.
6
Contoh Masukan 2 6 3 3 1 2 4 5 0 2
Contoh Keluaran 5 3
Penjelasan Untu k contoh kasu s pertama, tempatkan kelima ekor sapi itu di kandang nomor 1, 2, 3, 4, dan 6. Perhatikan bahwa kandang nomor 1, 2, dan 4 meru pakan kandang spesial. Dengan cara ini, kebu tu han setiap sapi terpenu hi. Untu k contoh kasu s kedu a, tempatkan ketiga sapi di kandang nomor 1, 3, dan 5.
Batasan • • • •
1 ≤ T ≤ 20 1 ≤ N ≤ 2.000.000.000 0 ≤ M ≤ 100.000 1 ≤ K ≤ 100.000
7
Lorong Batu Batas Waktu : 2 detik Batas Memori: 32 MB Saat melaku kan ekspedisi ke gu a terpencil, Pak Chanek menemu kan sebu ah lorong yang penu h dengan batu permata misteriu s. Lorong tersebu t direpresentasikan menjadi sebu ah tabel beru ku ran 2 baris dan N kolom. Hanya ada du a kemu ngkinan u ntu k setiap sel di dalam tabel itu , yaitu kosong atau berisi sebu ah batu permata. Pak Chanek ingin membawa semu a batu permata itu u ntu k diteliti lebih jau h. Untu k mengambilnya, Pak Chanek bisa melaku kan du a macam operasi: • Ambil batu permata di sebu ah sel • Ambil batu permata di du a bu ah sel yang bertetanggaan Du a bu ah sel dikatakan bertetangga apabila di dalam tabel, kedu a sel itu bersebelahan secara vertikal, horizontal, atau diagonal. Waktu Pak Chanek terbatas, karena dia haru s pu lang sebelu m matahari terbenam. Bantu lah Pak Chanek menentu kan berapa banyak operasi minimal yang perlu dia laku kan u ntu k mengambil semu a batu itu !
Format Masukan Baris pertama berisi sebu ah bilangan bu lat T, yaitu banyaknya kasu s u ji. Untu k setiap kasu s u ji: Baris pertama berisi sebu ah bilangan bu lat, N. Du a baris beriku tnya berisi N karakter yang hanya terdiri atas '0' atau '1'. Kedu a baris ini merepresentasikan keadaan lorong tersebu t, dengan '1' menyatakan berisi permata, dan '0' menyatakan kosong.
Format Keluaran Untu k setiap kasu s u ji, cetak sebu ah bilangan yang menyatakan berapa banyak operasi minimal yang perlu dia laku kan u ntu k mengambil semu a batu itu .
Contoh Masukan 2 5 10100 01010 4 1100 0001
8
Contoh Keluaran 2 2
Penjelasan Untu k kasu s pertama, ambil batu di sel baris 1 kolom 1 dan baris 2 kolom 2 sekaligu s, lalu ambil batu di sel baris 1 kolom 3 dan baris 2 kolom 4 sekaligu s. Untu k kasu s kedu a, ambil batu di sel baris 1 kolom 1 dan baris 1 kolom 2 sekaligu s, lalu ambil batu di sel baris 2 kolom 4.
Batasan • 1 ≤ T ≤ 20 • 1 ≤ N ≤ 1.000
9
Bocah Pantai Batas Waktu : 5 detik Batas Memori: 64 MB Pantai Chanek meru pakan pantai yang indah. Namu n, ombak di sana sangat ganas sehingga diperlu kan atu ran batas daerah aman bagi para pendu du k. Untu k kemu dahan, Pantai Chanek dipandang dari atas lalu dimodelkan dalam sistem koordinat Kartesiu s 2 dimensi. Terdapat pemu kiman pendu du k sepanjang segmen garis dari koordinat (0,A) hingga (0,B). Menu ru t BMKG (Badan Menganalisa Kasu s Gelombang), terdapat N bu ah titik ombak. Titik ombak ke-i berada pada koordinat (xi, yi). Selain itu , BMKG ju ga menyatakan bahwa daerah yang aman u ntu k dijelajahi adalah himpu nan semu a titik (x, y) yang memenu hi semu a syarat beriku t: • A≤y≤B • x≥0 • Jarak (x, y) terhadap titik pemu kiman terdekat tidak lebih dari jarak terdekat su atu titik ombak terhadap (x, y). Untu k soal ini, jarak titik (a,b) terhadap (c,d) didefinisikan sebagai (a-c) + |d-b|, dengan notasi |r| menyatakan nilai absolu t dari r. Bocah-bocah yang senang bermain di tepi pantai ingin tahu , berapa lu as daerah yang aman u ntu k dijelajahi? Bantu lah mereka menghitu ngnya!
Format Masukan Baris pertama berisi sebu ah bilangan bu lat T, yaitu banyaknya kasu s u ji. Untu k setiap kasu s u ji: Sebu ah baris berisi N, A, dan B. N baris beriku tnya berisi koordinat dari su atu titik ombak.
Format Keluaran Untu k setiap kasu s u ji, kelu arkan lu as daerah yang aman u ntu k dijelajahi, dibu latkan ke dalam du a angka di belakang koma menu ru t atu ran pada catatan di bagian bawah soal ini.
Contoh Masukan 1 2 0 10 10 10 6 2
Contoh Keluaran 45.00
10
Penjelasan Gambar beriku t ini menjelaskan keadaan pada contoh masu kan. Daerah yang berwarna hijau adalah daerah yang aman u ntu k dijelajahi.
Batasan • 1 ≤ T ≤ 20 • 1 ≤ N ≤ 100.000 • 0 ≤ xi, yi ≤ 1.000.000.000 dan meru pakan bilangan bu lat, u ntu k 1 ≤ i ≤ N • 0 ≤ A ≤ B ≤ 1.000.000.000
Catatan Bila Anda memerlu kan penggu naan tipe data bilangan real, disarankan menggu nakan tipe data dou ble. Jika Anda menyimpan jawaban dalam variabel jwb, maka metode mencetak yang disarankan adalah sebagai beriku t: • Bagi penggu na Pascal: writeln(jwb:0:2) • Bagi penggu na C/C++: printf("%.2lf\n", jwb) • Bagi penggu na Java: System.ou t.printf("%.2f\n", jwb)
11