Kilas Balik
Saya yang duduk di kelas 10 SMA bertemu dengan olimpiade sains bidang
komputer. Berhasil meraih medali perunggu di tingkat nasional membawa saya
menuju Pemusatan Latihan Nasional (Pelatnas) Pelatnas terdiri dari 4 tahap
pelatihan sekaligus seleksi untuk memilih siswa-siswi yang akan mewakili
Indonesia di Internasional Olympiad in Informatics (IOI). Perjuangan
saya di Pelatnas tidak berlangsung lama, saya gugur di tahap pertama. Namun
baru memasuki jenjang kelas 11 saat itu, saya masih punya sekali kesempatan
untuk mengikuti olimpiade sains SMA.
Sejak Pelatnas tahap 1 berakhir, saya kembali menjalani kehidupan
sekolah. Ada banyak tugas sekolah yang harus saya kerjakan serta ujian semester
yang harus saya hadapi. Setelah menyelesaikan semua susulan, saya baru dapat
melanjutkan latihan olimpiade. Buku Competitive
Programming karya Steven Halim menjadi buku pegangan saya untuk belajar.
OSK
Olimpiade Sains Kota/Kabupaten (OSK) tahun 2015 tingkat SMA diadakan
pada bulan Februari, lebih awal daripada tahun sebelumnya untuk menyesuaikan jadwal
dengan tingkat SMP dan SD. Saya cukup beruntung diberi kesempatan untuk
berpartisipasi dalam OSK 2015 tanpa seleksi tingkat sekolah karena pernah lolos
ke tingkat nasional. Tentunya karena saya menjadi juara 1 OSK 2014, saya sangat
optimis dan hanya memikirkan target emas di Olimpiade Sains Nasional (OSN)
2015.
Februari adalah waktu yang begitu dekat, beberapa minggu setelah
kegiatan belajar sekolah dimulai, seleksi dan pelatihan sekolah untuk OSK
segera dimulai. Berbeda dari tahun sebelumnya, kali ini peserta pelatihan mendapatkan
makan siang dari sekolah. Selain itu, pelatihan juga diselingi dengan rekreasi
berupa jalan-jalan mengunjungi kebun. Selama pelatihan kali ini, saya lebih
fokus memperdalam pemrograman dan mengerjakan beberapa soal-soal OSK.
Hari pelaksanaan OSK pun tiba. Kali ini OSK dilaksanakan di SMAN 8
Pontianak. Perubahan tempat pelaksanaan ini tidak mengubah rasa percaya diri
saya untuk kembali mengulang prestasi saya pada OSK 2014. Dalam mengerjakan soal-soalnya,
saya mengerjakannya dengan cara yang biasa saya lakukan yaitu menuliskan
jawaban pada kertas buram terlebih dahulu lalu menuliskan ke lembar jawaban 15
menit sebelum waktu habis. Kali ini, saya lebih berhati-hati dalam mengerjakan
karena posisi tempat duduk yang berdekatan antar peserta.
Setelah mengerjakan, saya dan teman-teman sekolah saya berkumpul untuk
mendiskusikan jawaban masing-masing. Saya merasa bahwa saya akan mendapatkan
hasil yang tidak terlalu baik karena lebih berhati-hati dalam mengerjakan soal
telah mempengaruhi kecepatan kerja saya. Soal-soal pemrograman yang lebih saya
fokuskan juga sangat mudah dibanding tahun sebelumnya sehingga dapat dengan
mudah dijawab para peserta lain.
Perasaan buruk saya terbukti setelah hasil OSK diumumkan, saya meraih
peringkat ketiga dengan nilai yang sama dengan seorang peserta lainnya. Hasil
OSK ini membuat saya kembali sadar bahwa tentunya setiap siswa-siswi juga
berjuang untuk tingkat kota maupun provinsi, saya belum pasti lolos ke nasional
hanya karena sudah mengikuti Pelatnas. Namun, saya sangat bersyukur masih
mendapat kesempatan bertanding di provinsi.
OSP
Karena waktu pengumuman OSK dan waktu pelaksanaan Olimpiade Sains
Provinsi (OSP) yang berdekatan, pelatihan untuk OSP pun segera dimulai. Tidak
ingin mengulangi kesalahan yang sama, saya lebih memperdalam materi-materi
untuk seleksi tingkat provinsi daripada mempersiapkan diri untuk meraih medali
emas di OSN. Saya juga terbantu dalam belajar karena adanya situs kujawab.com
yang berisi soal-soal dengan jawaban dari berbagai orang.
Hari demi hari, soal demi soal, tidak terasa saya sudah duduk di bangku
peserta untuk mengerjakan soal OSP. Pada OSP tahun ini, terdapat beberapa soal
jenis baru yaitu menuliskan program/ide penyelesaian untuk suatu permasalahan
(seperti soal pada tingkat nasional), saya sendiri tidak dapat mengerjakan
salah satu soal yang penyelesaiannya menggunakan prinsip sarang merpati (Pigeon Hole Principle) meskipun soal ini
muncul dalam Pelatnas yang saya ikuti.
Selesai mengerjakan soal OSP, saya dan teman-teman seperti biasa
berkumpul untuk mendiskusikan beberapa soal dan jawaban. Ternyata saya tidak
teliti dalam menghitung hasil akhir di beberapa soal, saya menjadi cukup tegang
menunggu hasil OSP. Sambil menunggu pengumuman, saya melanjutkan latihan untuk
tingkat nasional dengan mengerjakan soal-soal tingkat nasional tahun-tahun
sebelumnya.
Selanjutnya pada suatu sore hari yang cerah, isu keluarnya pengumuman
hasil OSP mulai bermunculan di Facebook. Saya lalu menemukan sebuah surat softcopy yang mengundang siswa-siswi
untuk berpartisipasi pada OSN tahun 2015 yang akan diselenggarakan di Jogja. Nama-nama
yang tercantum pada surat tersebut telah lolos OSP dan saya menemukan nama saya
di situ! Saya senang sekali dapat lolos. Meskipun kali ini hanya saya sendiri
untuk bidang komputer dari Kalimantan Barat, saya ingin memberikan hasil
terbaik.
OSN
Seperti sebelumnya, ada Pelatihan Jarak Jauh (PJJ) yang disediakan Tim
Olimpiade Komputer Indonesia (TOKI) untuk para peserta OSN komputer. PJJ
berbentuk pengerjaan 6 bab training gate yang
diawasi seorang supervisor. Berbeda
dengan tahun sebelumnya, kali ini saya mengetahui siapa supervisor saya, dia adalah Alva Thomson.
Meskipun sudah menyelesaikan 6 bab training
gate, saya tetap mengerjakannya saat PJJ sebagai latihan. Rangkaian PJJ
juga meliputi tryout yang
dilaksanakan sebanyak 2 kali. Nilai tryout
pertama saya tidak terlalu bagus dan bahkan buruk untuk tryout ke-2. Saya juga sempat mengerjakan open Asia-Pacific Informatics Olympiad (APIO) dan juga mendapat
hasil yang buruk. Saya menjadi tidak yakin bisa mendapat emas di OSN.
Siap tidak siap, akhirnya OSN pun akan dimulai. Dengan mengenakan batik
kuning, tim dari Kalimantan Barat berangkat untuk OSN melalui penerbangan
menuju Jakarta kemudian Jogja. Dalam perjalanan, saya membaca buku Competitive Programming agar tidak lupa
dengan konsep yang telah dipelajari.
Hari 1
Rangkaian acara OSN diadakan dalam waktu 1 minggu dengan waktu kompetisi
umumnya 2-3 hari untuk setiap bidang. Tim dari Kalimantan Barat tiba pada siang
hari, berbeda dengan tahun sebelumnya dimana kami tiba di malam hari. Setibanya,
kami segera dimobilisasi ke hotel berdasarkan bidang yang kami ikuti. Peserta
OSN bidang komputer menginap di Hotel Sahid Rich bersama beberapa bidang lain.
Setelah registrasi, kami diberikan tas, kaos serta beberapa souvenir
OSN. Sempat terjadi sedikit masalah dalam pembagian kamar, namun pada akhirnya
saya sekamar dengan Andreas dari SMAK 3 Penabur Jakarta.
Hari 2
Mungkin karena sudah mengetahui rangkaian acara dan sangat tidak sabar
untuk berkompetisi, pembukaan yang dilaksanakan pada hari kedua ini tidak
begitu meriah buat saya dibandingkan tahun sebelumnya.
Untuk bidang komputer, hari ke-2 adalah hari pelaksanaan sesi 0 atau practice session. Sesi ini dimanfaatkan peserta
untuk mencoba environment (komputer, software, internet, sistem, dsb) yang
akan digunakan untuk OSN nantinya. Kontes OSN Komputer sendiri dilaksanakan di
Universitas Islam Indonesia (UII). Saat itu komputer yang digunakan para
peserta adalah komputer dengan layar datar dan touchscreen, tentu saya sangat penasaran dan antusias menggunakan
komputer seperti itu. Saya pun mengerjakan 3 soal yang diberikan dan
mencoba-coba sistem. Trivia: karena
sempat terjadi kesalahan teknis, saya sempat menyelesaikan ketiga soal tersebut
dengan 1 source code.
Hari 3
Inilah hari dimulainya sesi 1 kompetisi, para peserta diberikan 3 soal
untuk dikerjakan selama 5 jam dengan poin maksimal 100 untuk setiap soalnya.
Seketika kontes dimulai, saya membaca soal ketiga terlebih dahulu karena
judulnya yang cukup menarik yaitu “Bisa Jadi Tebak Angka”. Setelah memahami
soal dan karena soal bertipe interaktif, saya langsung koding tanpa analisis
kompleksitas dan mendapatkan nilai 26. Saya baru mulai berpikir bahwa ternyata
soal ini cukup sulit, lalu melirik soal lain terlebih dahulu.
Setelah membaca soal pertama dan kedua, saya memutuskan untuk
mengerjakan soal pertama. Saya cukup yakin bahwa soal pertama adalah soal
paling mudah dari ketiga soal, saya lalu menggunakan greedy untuk menyelesaikannya. Hasilnya adalah Wrong Answer, saya mendapat 34 poin meskipun saya yakin bahwa greedy saya benar.
Kesalahan saya adalah saya tidak cast
variabel ke double terlebih
dahulu sehingga salah ketika melakukan pembagian. Namun saat OSN saya tidak
mengetahui kesalahan saya dan akhirnya mengganti sedikit implementasinya yang
melakukan perhitungan secara matematis menjadi menggunakan binary search. Setelah mengubahnya, saya berhasil mendapatkan Accepted
(100 poin), kemudian saya lanjut ke soal kedua tanpa memikirkan
kesalahan saya sebelumnya.
Saya tidak mengetahui solusi untuk mendapatkan Accepted pada soal kedua, sehingga saya pindah lagi ke soal ketiga.
Saya lalu mengerjakan soal ketiga dengan approach
yang cukup memaksa namun berhasil mendapatkan 47 poin. Setelah tidak lagi
memiliki ide penyelesaian, akhirnya saya bruteforce
soal kedua dan mendapatkan 55 poin. 202 menjadi total nilai yang saya peroleh
pada sesi 1.
Setelah kontes berakhir, saya lalu melihat scoreboard 4 jam pertama sesi 1 dan ternyata saya berada di posisi
ketiga, posisi yang cukup aman namun cukup bahaya juga bila menargetkan emas. Saya
cukup puas dengan hasil saya karena berdasarkan hasil tryout saya tidak menyangka dapat berada di posisi ketiga sekarang.
Trivia: ternyata ada live commentary OSN bidang komputer di
Facebook (https://www.facebook.com/josua.mustiko/posts/10200506457781433
bisa diakses jika berteman dengan Josua) selama kontes berlangsung
Hari 4
Untuk kontes pada sesi 2 ini, saya mulai membaca soal secara urut.
Setelah membaca soal pertama, saya merasa sepertinya soal ini cukup sulit dan
lanjut membaca soal kedua. Sangat terlihat bahwa soal ini bisa diselesaikan
dengan greedy. Setelah mencoret-coret
di kertas buram, saya lalu mulai koding dan berhasil mendapatkan 70 poin. Saya
segera mencari bug pada kode saya
lalu mendapatkan Accepted setelah
mengganti tipe variabel. “Awal yang bagus”, kata saya dalam hati.
Saya lalu lanjut membaca soal ketiga. Melihat soal ketiga berinteraksi
dengan string dan merasa bahwa
kodenya akan panjang, akhirnya saya memutuskan kembali kepada soal pertama
terlebih dahulu. Saya tidak menemukan solusi untuk memperoleh Accepted untuk soal pertama. Namun saya melihat
bahwa 72 poin dapat diperoleh dengan bruteforce,
saya lalu bruteforce soal pertama dan
memperoleh 72 poin.
Saya kembali ke soal ketiga meskipun belum mendapat solusinya. Saya lalu
mencoba memainkan game yang tersedia
pada soal tersebut dan berhasil menemukan ide solusi. Karena saya belum terlalu
jago dalam analisis kompleksitas, saya mengerjakannya dengan cara terbaik yang
saya dapatkan dengan pikiran “Kayaknya sih AC (Accepted)”. Saya berhasil memperoleh 94 poin dengan cara tersebut,
dan Accepted setelah menambahkan
kasus khusus untuk subtask pertama.
Sisa waktu saya habiskan dengan memikirkan solusi untuk mendapatkan Accepted pada soal pertama. Akhirnya
setelah berpikir cukup lama, saya memiliki ide yang sepertinya benar namun
sepertinya akan panjang dan banyak bug.
Akhirnya soal pertama tidak berhasil saya selesaikan karena waktu sudah tidak
cukup.
Saya berhasil memperoleh total nilai 474 dari sesi 1 dan 2. Saya
menempati posisi kedua pada scoreboard
gabungan 4 jam pertama sesi 1 dan 2. Tentu karena penasaran, saya dan beberapa
peserta lain saling bertanya nilai satu sama lain dan akhirnya saya cukup yakin
bahwa saya tetap berada di posisi kedua di hasil akhir meskipun nilai saya
cukup jauh dari peringkat pertama yang full
score (600).
Hari 5
Hari ini merupakan hari ‘libur’ dimana para peserta OSN akan diajak
jalan-jalan di tempat wisata Jogja. Seperti sebelumnya untuk lebih menikmati
wisata, saya bersama guru dan teman sekolah berwisata terpisah dari rombongan
peserta lainnya. Wisata kami diisi dengan mengunjungi Candi Borobudur, Goa
Pindul, hingga membeli bakpia yang masih Rp25.000,-/kotak. (saat kisah ini
ditulis harga sekitar Rp45.000,-/kotak)
Hari 6
Penutupan sekaligus pengumuman hasil OSN yang merupakan momen yang
ditunggu semua peserta. Entah karena musik yang kurang meriah atau scoreboard 4 jam pertama OSN, saya dan
sebagian peserta bidang komputer merasa cukup tenang saat menanti pengumuman.
Nama medalis dibacakan mulai dari perunggu, perak, kemudian emas.
Dengan lajunya penyebaran informasi, nama-nama medalis yang dibacakan sudah
langsung dapat diketahui melalui berbagai media sosial (saya termasuk salah
satu live reporter saat itu). Setelah
nama-nama medalis perunggu maupun perak dibacakan, saya bernafas lega karena
tidak mendengar nama saya.
Muncullah nama saya saat pembacaan peraih medali emas, saya pun segera
maju ke panggung setelah mendengar nama saya. Pak Anies (selaku Mendikbud saat
itu) kemudian mengalungkan medali emas di leher saya. Saya begitu bangga dan
senang karena tujuan saya telah tercapai.
Selesai acara, para medalis kemudian diantar menuju studio MetroTV untuk menjadi penonton langsung acara Mata Najwa. Karena studio kepenuhan, saya bersama teman-teman dan guru-guru sekolah pun pergi meninggalkan studio dan makan di restoran Jejamuran yang unik karena menunya berbahan pokok jamur.
Hari 7
Selesainya rangkaian kegiatan OSN, kontingen setiap provinsi pulang
pada hari ini.
———
Penutup
Setelah mendapat medali pada OSN, para medalis bidang komputer akan
melalui tahapan-tahapan pelatihan dan seleksi untuk mewakili Indonesia di Internasional Olympiad in Informatics (IOI).
Saya berhasil lolos melalui tahap 1 dan 2 kemudian mewakili Indonesia dalam National Olympiad in Informatics (NOI) Singapore 2019 dan Asia-Pacific Informatics Olympiad (APIO) namun saya tidak berhasil
terpilih menjadi wakil Indonesia untuk IOI.
Akhir kata, begitulah kisah perjalanan saya dalam olimpiade informatika
SMA. Semoga pengalaman saya ini dapat bermanfaat bagi pembaca khususnya yang
masih duduk di bangku sekolah. Ada banyak sekali kesempatan, hanya tergantung
kita yang mau berjuang untuk mengambil kesempatan itu. Manfaatkan waktu yang
ada dan mengutip dari semboyan sekolah saya, Tetap bersemangat!

