Kamis, 16 Juli 2015

Perjalanan Saya Hingga OSN 2014


Prakata

Ketertarikan saya terhadap bidang komputer sudah dimulai sejak kecil. Saya diikutkan kursus komputer oleh orangtua dimana saya belajar Microsoft Word dan Excel. Saya juga gemar bermain game komputer sejak secara offline, warnet, hingga adanya internet di rumah. Programmer menjadi cita-cita saya karena ingin membuat game sendiri.

Pra-OSK – OSK – OSP

Juli 2013, saya menjadi siswa SMA Santu Petrus. Seluruh siswa kelas 1 SMA saat itu diharuskan mengisi angket minat bidang olimpiade. Angket berisi 10 pilihan yang terdiri dari 9 bidang Olimpiade Sains Nasional (OSN) dan bahasa inggris. Saya memilih 3 bidang di antaranya, secara berurutan komputer, inggris, dan matematika. Saya tidak ingin memilih fisika meskipun menyukainya namun saya masih ingat horornya soal fisika ketika mengikuti Olimpiade Sains Kota (OSK) saat duduk di kelas 3 SMP.

Seminggu kemudian, seleksi untuk memilih siswa-siswi yang akan mengikuti pembinaan pun dimulai. Saya mengikuti tes bidang komputer dan matematika karena inggris belum mengadakannya. Saya cukup terkejut melihat bahwa tes untuk bidang komputer terdiri dari soal-soal logika, teka-teki, dan matematika. Meskipun saya sudah mendengar kabar mengenai soal-soal bidang komputer sebelumnya, namun tetap timbul pertanyaan, "Kenapa dinamakan komputer?"

Sekitar 2 minggu setelah seleksi, guru komputer saya memberi tahu bahwa saya lolos. Saya sempat bingung karena sepertinya saya hanya menjawab 40 dari 50 soal sedangkan tertulis bahwa syarat minimal adalah meraih nilai 160 (sistem penilaian benar 4 poin, salah -1, tidak diisi 0). "Masa benar semua? Beruntung banget!". Ketika saya melihat daftar nilai seleksi, ternyata saya peringkat 1 dengan nilai 130. Saya kaget karena saya merasa bahwa soal yang bisa saya jawab seharusnya juga bisa dijawab orang lain. Berhasil lolos untuk mengikuti pembinaan sekolah menjadi langkah awal saya bergelut dalam dunia Competitive Programming (CP).

Pelatihan pun dimulai, saya bersama beberapa teman yang lolos kemudian diajarkan pemrograman menggunakan bahasa Pascal, akhirnya saya tahu alasan bidang ini disebut bidang komputer. Saya pernah diajarkan sedikit mengenai Pascal ketika duduk di bangku SD namun tidak mengingat apa-apa. Akhirnya saya dan teman-teman mulai belajar pemrograman dari nol dengan mengerjakan training gate yang ada di TOKI Learning Center (TLC).

TOKI merupakan singkatan dari Tim Olimpiade Komputer Indonesia yaitu siswa-siswi yang mengikuti pemusatan latihan nasional (Pelatnas) — pelatihan dan seleksi untuk menentukan wakil Indonesia dalam ajang olimpiade komputer tingkat internasional. Menelusuri website TOKI sangat membuat saya merasa tertarik, tertantang, hingga membayangkan rasa bangga seandainya nama saya ada di hall of fame situs tersebut. Hal yang semakin memotivasi saya adalah lokasi pelaksanaan Olimpiade Sains Nasional (OSN) saat itu adalah di Mataram. “Kapan lagi bisa ke Mataram? Ini tempat OSN terbaik! Saya harus sampai ke OSN.”

Para veteran — siswa-siswi kelas 2 SMA yang sudah mengikuti OSK tahun lalu mulai bergabung di pelatihan sejak semester 2. Pada pelatihan semester ini, banyak sekali hal baru yang saya pelajari seperti modulo dan kombinatorik yang bisa cukup saya pahami dengan mengerjakan soal, bertanya kepada guru, dan juga mencari tahu di internet.

Seleksi untuk memilih siswa-siswi yang akan bertanding di OSK pun diadakan. Sekolah hanya dapat mengirimkan 5 orang untuk bidang komputer ke OSK, dan saya berhasil lolos menjadi 1 di antaranya. Pelatihan setelah seleksi menjadi lebih intensif, kami dibebaskan dari pelajaran sekolah untuk berlatih. Masa pelatihan ini juga dikenal dengan masa karantina. Selama karantina, saya melanjutkan training gate hingga menyelesaikan dasar-dasar pemrograman (bab 2). Saya juga membahas soal-soal OSK tahun sebelumnya bersama teman-teman peserta lainnya.

Tibalah saatnya OSK, suasana kompetisi persis seperti saat saya mengikuti OSK Fisika tahun lalu namun kali ini situasi berbeda karena saya bukan lagi siswa yang ikut OSK saja namun juga siswa yang sudah persiapan menghadapi OSK. Sekolah saya memiliki prestasi selama beberapa tahun di OSK bidang komputer, rasa optimis pun membuat saya tetap tenang meski bertemu siswa-siswi yang sudah langganan juara berbagai kompetisi.

Bel tanda dimulainya OSK berbunyi, artinya dalam waktu 3 jam ke depan ada 50 soal yang dapat saya kerjakan. Dengan mekanisme penilaian benar +4, salah -1, dan tidak menjawab 0, 3 peserta dengan nilai terbaik akan mewakili Kota Pontianak di Olimpiade Sains Provinsi (OSP) Kalimantan Barat. Saya mulai dengan mengerjakan soal-soal yang tidak memakan waktu lama, menuliskan semua jawaban di kertas buram dan memindahkannya ke lembar jawaban sekitar 15 menit sebelum waktu pengerjaan berakhir. Saya berhasil menjawab 36 soal.

Kembali dalam kehidupan sekolah, saya harus mengejar materi, tugas, dan ujian yang telah saya lewati saat mengikuti karantina. Akhirnya pada suatu hari saya bersama 1 teman sekelas saya dipanggil ke kantor guru, ternyata saya berhasil lolos OSK dan meraih peringkat 1. Rasanya senang sekali karena berhasil maju selangkah menuju OSN dan ini pertama kalinya saya menang dalam kompetisi yang pesertanya begitu banyak.

Berhasil lolos OSK, yang selanjutnya saya tunggu adalah Olimpiade Sains Provinsi (OSP) dan pelatihannya, karena bebas dari pelajaran sekolah. Menjelang pelatihan OSP saya menuliskan berbagai soal dan solusi dengan konsep-konsep unik seperti diophantine, pigeon-hole, teori bilangan, dan sebagainya pada sebuah buku tulis yang kemudian dikenal sebagai buku keramat yang saya pelajari sebelum kompetisi setiap saatnya. Saat pelatihan saya juga melanjutkan pengerjaan training gate dan berhasil menyelesaikan bab 3 (ad hoc). Tanpa terasa tibalah hari pelaksanaan OSP.

Buku keramat saya

OSP bidang komputer tahun 2014 terdiri dari 2 sesi. Pada sesi pertama disediakan soal-soal menemukan pola (seperti pada tes IQ) sedangkan sesi kedua terdiri dari 50 soal — 48 soal isian singkat dan 2 soal pemrograman. Soal pemrograman adalah tipe soal yang baru ada pada OSP tahun ini, dan saya tidak bisa mengerjakan keduanya. Saya mengerjakan semua soal yang bisa saya kerjakan, kemudian menjawab ‘asal’ (dengan 0 atau 1) soal yang masih kosong karena tidak ada pengurangan nilai bila salah.

Selesai menghadapi OSP, saya harus menghadapi ujian semester dan juga susulan tugas dan ujian. Tidak begitu lama hingga liburan tiba. Selama liburan saya melajutkan latihan training gate dan berhasil menyelesaikan sebagian besar bab 4A (complete search), hanya sedikit bug yang menghambat untuk lanjut ke bab berikutnya. Saya juga sempat mengalami depresi pada masa liburan ini sehingga tidak banyak latihan.

Pada suatu hari, tiba-tiba saya dikirimkan sebuah gambar oleh teman saya melalui Facebook. Gambar tersebut merupakan screenshot yang berisi beberapa nama, dan ada nama saya beserta sekolah dan provinsi saya. Ternyata screenshot tersebut merupakan screenshot surat pemanggilan peserta OSN! Terdapat 2 orang yang akan mewakili provinsi Kalimantan Barat untuk OSN bidang komputer, dan saya senang sekali menjadi satu di antaranya. Keinginan saya untuk bisa sampai ke tingkat OSN yang diadakan di Mataram tercapai!

OSN

Dalam persiapan menuju OSN, terdapat Pelatihan Jarak Jauh (PJJ) yang disediakan oleh para alumni dan pembina TOKI. Pelatihan ini terdiri dari latihan training gate yang disupervisi alumni TOKI sehingga bisa bertanya bila kesulitan, dan juga tryout OSN yang akan dilaksanakan 2 kali. PJJ tahun ini bertemakan Pokemon, dimana semua peserta memiliki simbolis pokemonnya, sayangnya saya tidak pernah mengetahui siapa supervisor saya dan Pokemon apa yang saya dapatkan.

Saya mengerjakan setiap soal training gate PJJ yang sudah saya kerjakan sebelumnya dari awal, hingga akhir PJJ saya berhasil menyelesaikan 80% dari bab 4 dan bisa mengerjakan beberapa soal di bab 5. Selama PJJ ini saya juga mencoba mengerjakan beberapa soal OSN sebelumnya, namun soal OSN tahun lalu (2013) belum ada yang bisa saya kerjakan. Trivia: Saya memikirkan soal berjudul “Anagram” dari bab 4 dan belum menemukan solusinya selama 2 hari.

Selama pelatihan, saya 2 kali berada di lab komputer sekolah hingga jam 6 malam untuk mengerjakan tryout. Setiap tryout terdiri dari 4 soal dan berdurasi 5 jam seperti pada 1 hari OSN. Pada tryout pertama saya hanya berhasil mendapat nilai 42 dari 400, dengan bruteforce soal “Equation” dan “Baby Emolga”. Sementara pada tryout kedua saya berhasil mendapat nilai 60 dengan floodfill pada soal “Depresi” menghasilkan 50 poin dan bruteforce soal “Shazam” 10 poin.

Selama pelatihan saya belajar beberapa hal baru seperti merge sort, binary search, dan breadth-first-search. Saya menyadari ada perbedaan yang cukup besar antara kemampuan saya dengan peserta lainnya. Saya tidak terlalu percaya diri dapat memperoleh medali dan tanpa terasa hari keberangkatan pun tiba.

Hari 1

Perjalanan menuju Mataram, Kontingen Kalimantan Barat berangkat dari bandara Supadio Pontianak dengan berpakaian batik merah. Perjalanan dilakukan melalui 2 kali penerbangan yaitu Pontianak-Jakarta dan Jakarta-Pontianak. Kami tiba di Mataram pada malam hari karena penerbangan mengalami delay. Peserta bidang komputer dan beberapa bidang lainnya menginap di Hotel Lombok Raya. Setelah melakukan registrasi, kami diberikan tas yang berisi buku panduan, kaos OSN, dan beberapa barang lainnya. Saya sekamar dengan Jonathan dari Jakarta, dan meskipun kamar hotelnya memiliki 3 kasur, namun hanya ada 1 selimut sehingga saya berselimutkan sprei selama OSN.

Hari 2

Jam 3 subuh saya terbangun, melihat seseorang sedang membongkar koper. Orang inilah teman sekamar saya yang kedua yaitu Ragil dari Sibolga. Pada hari kedua ini diadakan pembukaan, saya bertemu dengan beberapa siswa lain berpakaian kaos merah seperti saya yang berarti mereka juga peserta bidang komputer. Mereka membahas entah soal atau apa dengan istilah-istilah keren yang belum banyak saya mengerti saat itu. Semangat dalam diri saya membara, saya lupa terhadap rasa tidak percaya diri saya.

Selain pembukaan, beberapa bidang lain melaksanakan bagian dari lombanya hari ini. Untuk bidang komputer sendiri, dilaksanakan practice session atau sesi day 0. Sesi ini digunakan sebagai kesempatan bagi peserta untuk mencoba sistem yang digunakan saat lomba. Sesi ini dan juga lomba 2 hari selanjutnya dilaksanakan di hotel tempat kami menginap, dengan menggunakan 3 ruangan yang dinamai menggunakan nama pulau yaitu gili air, gili meno, dan gili trawangan. OSN tahun ini juga merupakan pertama kalinya osn menggunakan laptop.

Hari 3

Setelah sarapan, para peserta bidang lain mulai diberangkatkan ke tempat perlombaan masing-masing. Peserta bidang komputer menunggu dan bersiap untuk berlomba di hotel. Dimulailah sesi day 1 OSN Komputer 2014.

Diberikan 4 soal untuk dikerjakan selama 5 jam. Saya mulai dengan membaca soal pertama “Pelontar Bebek” dimana terdapat gambar gerak melambung dan rumus fisika, merasa ini pasti sulit saya lanjut ke soal berikutnya. Soal kedua “Reduksi String” mirip seperti soal yang baru saya kerjakan saat PJJ di bab 4 yang melakukan kompres data yang diberikan. Merasa soal ini bisa diselesaikan dengan prefix sum (saat itu saya belum tahu namanya prefix sum) dan binary search, saya segera implementasi dan berhasil mendapatkan Accepted! (AC, poin penuh untuk 1 soal yaitu 100 poin). Saya senang sekali karena ini merupakan soal tingkat OSN pertama yang saya bisa AC dalam percobaan pertama.

Lanjut membaca soal berikutnya “Perang Dunia Ketiga”, soal yang menarik namun sepertinya tidak bisa saya selesaikan. Saya lanjut membaca soal terakhir “Cat Rumah”. Setelah membaca soal dan mencoba memainkan permainan interaktifnya saya masih tidak mengerti bagaimana dengan Pascal bisa menyelesaikan soal ini. Akhirnya saya ‘nyampah’ open subtask soal pertama dan ketiga dan berhasil mendapat 18 poin masing-masing. Total perolehan nilai saya 136(18+100+18+0) dan pada scoreboard 4 jam pertama, saya berada pada posisi 20-an, posisi perunggu.

Hari 4

Sesi day 2 dilaksanakan. Sama seperti sesi sebelumnya saya mulai dengan membaca soal pertama “Komunikasi Bebek”, saya mengetahui bahwa ini adalah jenis soal yang sering muncul namun saya juga mengetahui saya belum bisa menyelesaikan jenis soal ini. Saya lanjut ke soal berikutnya “Suten”, soal interaktif yang sepertinya bisa saya kerjakan tanpa algoritma-algoritma aneh namun akan lama, jadi saya lanjut membaca soal berikutnya. Soal ketiga “Sang Pelompat” adalah soal dengan kemampuan andalan saya yaitu floodfill, tapi karena sepertinya akan lama saya lanjut membaca soal terakhir. “Hiasan Dinding”, soal terakhir yang bahkan open subtasknya tidak bisa saya kerjakan.

Setelah membaca semua soal, saya mulai mengerjakannya. Pertama saya menerapkan strategi yang baru saya pelajari dari teman-teman peserta lainnya yaitu ‘nyampah dulu’, jadi saya me-‘nyampah’ open subtask setiap soal kecuali “Hiasan Dinding”. Setelah itu saya mengerjakan “Sang Pelompat” dengan depth-first-search (DFS) 2 tingkat dan berhasil mendapat nilai 84 dengan subtask sisanya mendapat Time Limit Exceeded (TLE, program berjalan melampaui batas waktu yang diberikan). Saat itu pengetahuan saya berkata bahwa saya harus mengganti ke BFS untuk mendapatkan Accepted namun karena saya masih tidak begitu jago BFS dan resikonya cukup besar untuk mendapatkan 16 poin akhirnya saya puas dengan nilai 84 dan beralih ke soal berikutnya.

Soal selanjutnya yang saya kerjakan adalah “Suten”, saya mulai dengan bermain game interaktif yang diberikan beberapa kali kemudian dengan pola yang saya temukan saya mulai implementasi solusi dengan if yang sangat banyak, untuk setiap kasus saya flag di matriks sesuai analisanya. Saya berhasil memperoleh nilai 59 dengan solusi tersebut yang saya tidak tahu salahnya dimana saat itu (salahnya ternyata kasusnya kurang general sehingga ada kasus yang tidak di-cover). Total nilai saya hari ini 163(20+59+84+0), ditambahkan nilai saya kemarin menjadi 299. Saya sangat puas dengan kerja saya selama 2 hari ini dan merasa nilai saya cukup bagus untuk memperoleh medali.

Setelah kontes dan beristirahat, kami diberikan penjelasan mengenai TOKI dan bertemu para pembuat soal serta nama-nama yang ada di hall of fame TOKI. Kami juga diberikan flashdisk berbentuk gelang dan menandatangani papan spanduk. Malam harinya, saya bersama teman-teman dan guru dari sekolah saya mencoba beberapa makanan khas Lombok.

Hari 5

Hari ini merupakan hari jalan-jalan. Saya bersama teman-teman dan guru dari sekolah berencana jalan-jalan ke gili trawangan. Pada pagi harinya, saya telat bangun karena lupa memasang alarm dan silent HP. Sampai di gili trawangan, kami menyewa sepeda untuk berkeliling pulau. Sayangnya karena banyaknya pasir, sepedanya malah sering didorong :’).  Pulangnya kami singgah di toko oleh-oleh dan makan McD di Mall Mataram, ini pertama kali saya makan McD karena tidak ada di Pontianak.

Hari 6

Hari Penutupan, dan disinilah akan dilaksanakan pengumuman medalis yang ditunggu-tunggu. Saking tidak sabarnya menunggu pengumuman, saya tidak ingat apa yang terjadi saat penutupan, yang jelas ada pergantian tuan rumah untuk tahun berikutnya. Dimulailah pembacaan pengumuman dari emas setiap bidang, perak setiap bidang, lalu perunggu setiap bidang. Saya sempat pesimis saat mendengar nama Ragil yang nilainya berbeda jauh dari saya, muncul di ujung pembacaan peraih medali perak, yang ternyata pembacaan dimulai dari peringkat bawah ke atas. Nama saya tidak muncul baik dalam pembacaan medali emas maupun perak yang sudah saya perkirakan, tibalah pembacaan medali perunggu. “..., Windi Chandra ...”, nama saya muncul! Syukurlah, saya segera berjalan ke depan dan ikut berbaris di panggung. Saya merasa senang sekali dan sangat bangga berdiri di atas panggung dengan medali dan sorotan kamera, ini merupakan pertama kalinya bagi saya. Saya sampai ingat lagu yang diputar saat itu, judulnya “Stand Up (for the Champions)”.

Selesai menerima medali, saya lalu diarahkan untuk mengambil buku tabungan untuk pemberian hadiah dari pemerintah. Setelah mengambil buku tabungan, foto-foto, kemudian mengambil kotak dan sertifikat medali. Malam harinya saya dan teman-teman jalan-jalan ke mall lagi karena terletak tepat di sebelah hotel.

Penutupan OSN 2014, saya yang pakai seragam putih dan celana hijau di depan.



Hari 7

Hari kepulangan, tim Kalimantan Barat berangkat pagi-pagi ke bandara dan pulang menggunakan rute yang sama ke Pontianak. Saya sendiri merasa sangat bangga membawa pulang salah satu dari 2 medali yang berhasil diperoleh. Selanjutnya saya harus mempersiapkan diri untuk kembali ke kehidupan sekolah dengan susulan ujian dan tugas yang sudah menumpuk.

4 komentar: