Senin, 21 Oktober 2019

Akhir Perjalanan


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.
Saat nama saya dipanggil

Tim Olimpiade Santu Petrus

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.

Pencapaian selama 3 tahun

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!