Friday, 4 July 2014

Kisah Perjalanan di TOKI: Saya dan Akhir Pelatnas

Pelatnas 3 TOKI 2011

Kali ini Pelatnas dilaksanakan di Universitas Indonesia, kampus Depok. Kami menginap di Pusat Studi Jepang, Fakultas Ilmu Budaya. Tempatnya sangat hijau, banyak pohon karet dan dekat danau. Jauh lebih baik dibandingkan dengan pusat kota yang biasa saya tempati. Rasanya benar-benar kagum, sekitar 2 tahun yang lalu tempat inilah yang menjadi awal perjuangan saya di OSN, dan kini menjadi pertandingan akhir dalam merebut posisi 4 besar TOKI 2011.

Kamar yang saya tempati menjadi basecamp, setiap harinya menjadi tempat berkumpul untuk makan malam atau bermain.

Saat berkumpul

Sesudah berkumpul

Ada hal yang hanya ada pada Pelatnas ini, yaitu makanan yang berlimpah. Saya tidak bisa lagi membedakan mana yang sarapan, cemilan, atau makan siang. Setiap 2 jam sekali, datang makanan. Entah itu pizza, burger, donat, bakmi, roti, atau hal-hal penggemuk yang dapat Anda bayangkan. Saya makmur pada Pelatnas ini, dan sepertinya tetap tidak bertambah berat badan.


Kami juga mendapat kesempatan mencicipi kopi buatan Pak Yugo, yaitu pada saat makan besar bersama dosen. Jadi di Fasilkom UI, ada acara makan besar antar dosen setiap bulannya. Kami diundang untuk ikut serta dan berbincang-bincang dengan para dosen. Kopi ini sangat enak, tercatat hingga sekarang (1 Juli 2014), kopi ini merupakan kopi paling enak yang pernah saya minum, lebih dari starbucks atau sejenisnya.


Pada Pelatnas kali ini, tidak banyak materi baru yang kita dapatkan. Lebih banyak latihan soal yang campur-campur, dan kadang diajarkan teknik baru seperti meet in the middle dan AVL Tree. Dari sisi peringkat, saya tidak terlalu aman. Seperti pada Pelatnas yang lalu, peringkat saya berada di sekitar 4. Karena itulah saya tetap berjuang untuk setiap latihan yang diberikan dan berusaha menyelesaikannya sebaik mungkin.

Terdapat suatu agenda penting pada Pelatnas 3 yang saya lupakan hingga memasuki akhir minggu pertama, yaitu APIO (Asia-Pacific Informatics Olympiad). Seluruh peserta Pelatnas 3 akan menjadi wakil Indonesia dalam ajang ini, dan 6 peserta terbaik akan mendapatkan sertifikat. Tentu saja, terdapat medali pada kompetisi ini. Namun medali itu tidak berbentuk fisik, sekedar berupa sertifikat. Pada saat itu, APIO terkenal lebih sulit dibandingkan IOI. Kita akan mengerjakan sebanyak 3 soal secara online selama 5 jam. Lebih jauh lagi, APIO dimasukkan sebagai salah satu komponen penilaian dalam memilih 4 besar nanti. Karena khawatir dengan APIO, saya mulai mencoba mengerjakan soal-soal tahun sebelumnya dan mencari solusinya.

Tidak terasa akhir minggu kedua telah dicapai, waktunya pertandingan APIO! Tuan rumah yang menyelenggarakan APIO 2011 adalah Iran, dan kami sudah diberi akun untuk bertanding. Setelah menunggu hingga pukul 09.00 dan hendak mulai login, tiba-tiba servernya berjalan dengan sangat lambat! Tidak satu pun dari peserta Pelatnas 3 yang berhasil login. Parahnya, kejadian ini berlangsung hingga 30 menit pertama! Akhirnya kami baru bisa login pukul 09.30 dan bisa melihat soal. Wah 30 menit hilang, lumayan rugi juga :(

Terdapat 3 soal, dan saya mulai dengan membaca soal pertama.
  1. Table Coloring: setelah membaca soalnya, terpikir soal ini bisa diselesaikan DP. Intinya adalah diberikan tabel, dan tentukan berapa banyak cara mewarnai tabel tersebut menurut aturan yang diberikan. Namun, setelah melihat batasan masukannya, saya kaget! Banyaknya baris dan kolomnya bisa sampai 1.000.000, dan tentunya tidak bisa dengan DP O(baris * kolom). Setelah melihat batasan itu, saya langsung lewati dan coba membaca soal lain.
  2. Find the Path: soal ini lebih manusiawi, intinya diberikan kotak-kotak pada bidang 2 dimensi, tugas kita mencari jalur terpendek dari suatu petak ke petak lainnya tanpa melewati kotak dan hanya bisa belok saat berada di sisi kotak. Batasannya memang juga tidak wajar, tetapi soal ini masih terlihat oke.
  3. Guess My Word: soal ini lebih gila lagi, game theory. Saya tidak cukup ilmu untuk menyelesaikannya, jadi saya targetkan untuk menggunakan DP minimax brute force untuk menyelesaikannya.

Setelah membaca semua soal, saya memutuskan untuk menginvestasikan waktu pada soal table coloring. Waktu 30 menit berlalu, dan saya sama sekali tidak memiliki ide untuk menyelesaikannya selain menggunakan backtracking. Akhirnya saya menyerah dan menggunakan solusi tersebut.

Soal berikutnya yang saya coba adalah find the path. Ada beberapa ide yang saya dapatkan, tetapi tidak mungkin mendapat 100 dan membutuhkan kode yang sangat panjang. Karena pada soal tertulis bahwa ada 60% kasus yang ukuran petanya tidak besar, dan saya sudah tidak bisa memikirkan ide lainnya, akhirnya saya putuskan untuk mulai coding soal ini. Nyaris 3 jam saya gunakan untuk mengimplementasikannya, dan tersisa sekitar 45 menit untuk soal terakhir. Tanpa pikir panjang, soal guess my word langsung saya coding dengan DP minimax yang sangat "maksa".

Akhirnya segalanya sudah saya submit, dan sudah nyaris pukul 14.00. Saya menanti kontes berakhir, tetapi kontes tidak berakhir! Sudah lewat 14.00, dan kita masih bisa beraktivitas di website lomba. Akhirnya saya sadar bahwa terdapat tambahan waktu 30 menit, karena kejadian pada awal kompetisi. Waktu 30 menit ini saya gunakan untuk membaca-baca implementasi saya, semisalnya ada bug. Tentunya saya tidak ingin kejadian seperti OSN 2010 kembali menimpa saya. Oh ya, zaman itu kita masih belum bisa melihat nilai resmi, hanya pada akhir kontes baru bisa diketahui.

Sekitar 15 menit terakhir, saya menemukan barisan kode saya yang KESALAHANNYA SANGAT FATAL. Langsung saya perbaiki dan periksa ulang seluruh kode tersebut. Hingga pada akhir kontes, saya tidak lagi menemukan bug dan berharap segalanya sudah benar.

Secara umum, saya puas dengan performa saya pada APIO 2011. Maksudnya, saya mengerahkan seluruh kemampuan saya. Jika tidak ada bug konyol, saya puas akan hasilnya tanpa peduli peringkat. Akhir minggu itu akhirnya saya gunakan untuk bersantai.

Malam hari Minggu, seperti biasa kamar saya dipenuhi peserta lain. Jessica mengetuk pintu kamar saya, dan dibukakan pintu. Kemudian kurang lebih dia berkata "Hasil APIO udah ada, tapi belom ada peringkatnya". Semua orang terkejut dan langsung bertanya bagaimana hasil secara umumnya. Dijawabnya "suram, kecuali Gozali".

Oh ya?!? Saya kurang percaya dengan hal itu dan langsung melihat sendiri dari website resmi (sekarang sudah hilang webnya). Total nilai saya 120, dengan rincian coloring 25 poin, find the path 80 poin (yeay!), dan guess my word 15 poin. Memang paling tinggi dibandingkan dengan peserta Pelantas lainnya. Saya benar-benar bersyukur dengan hasil ini, dan berharap bisa mendapatkan medali.

Hari Senin, pagi-pagi buta Dikra mengetuk pintu kamar saya. Saya membukakan pintu, dan melihat dia masih dalam keadaan baru bangun tidur. Dia langsung menyalami saya dan berkata "selamat Goz, lo dapet medali perak" sambil memperlihatkan layar ponsel yang membuka website resmi. Saya yang baru bangun tidur juga kaget, dan langsung melek setelah mendapatkan kabar tersebut. Rasanya senang sekali, bisa mempersembahkan medali perak APIO yang pertama untuk Indonesia. Selama ini, perolehan Indonesia di APIO selalu medali perunggu (10 kali), selain Irvan yang mendapat emas pada tahun 2008. Anda dapat melihat detilnya di web TOKI. Perolehan medali ini memberikan semangat bagi saya untuk mengerjakan soal-soal latihan. Waktunya memang tinggal 1 minggu lagi, tetapi minggu ini merupakan penentuan karena adanya simulasi akhir.

Akhirnya simulasi akhir pun akan dihadapi. Saya memulai hari dengan ritual yang biasa saya lakukan: BAB, berjemur matahari, dan makan cokelat. Untuk simulasi akhir, soal-soalnya tidak terlalu sulit. Dari 4 soal yang ada, saya yakin bisa menyelesaikan 3 dan mendapat 100. Hingga yang terakhir, saya menargetkan mendapat nilai parsial untuk soal terakhir. Meskipun begitu, saya juga yakin peserta lainnya bisa mendapat nilai 300++. Setelah selesai simulasi, saya langsung makan siang dan menyendiri. Saya baru menyadari bahwa kerja keras dan usaha sejauh ini akan ditentukan dalam beberapa jam lagi.

Tiba waktunya untuk pengumuman akhir. Hasil dibacakan oleh Karol (yang sudah membacakan pengumuman 4 besar entah sejak kapan, hingga TOKI 2014 pun masih). Hasilnya? Nama saya muncul di peringkat PERTAMA! Disusul dengan Reinhart, Jessica, dan Hudi. Ternyata nilai APIO saya mendongkrak posisi saya dan mengamankannya di 4 besar!

Saya terharu dengan hasil ini, bahwa akhirnya saya bisa sampai pada 4 besar TOKI. Terima kasih medali perak OSN 2010, yang memberikan saya motivasi untuk terus maju dan berkembang. Saya yang dulu belajar pemrograman secara otodidak, mendengar istilah "4 besar TOKI" dan berkata dalam hati "Haha, apa bisa jadi kayak mereka?". Teringat juga bahwa dulu pernah meng-update status facebook "suatu saat nanti, apakah bisa bergabung dengan mereka?", dan beginilah akhirnya :')

Selesai acara pengumuman, kami para peserta berniat untuk merayakan berakhirnya rangkaian seleksi 4 besar TOKI 2011. Dengan tuntunan dari Dikra, kita pergi ke Citos (Cilandak Town Square) untuk menonton film "Source Code". Saya juga menghadiahkan diri dengan mengkonsumsi cokelat mewah untuk merilekskan ketegangan selama 3 minggu.

Rasanya sisa waktu menjelang IOI ini ingin saya gunakan beberapa hari untuk beristirahat sejenak, menghadiri upacara kelulusan sekolah, dan berkumpul bersama teman-teman sekolah. Setelah itu, saya akan belajar dan mempersiapkan diri lagi sebelum ke Thailand nanti!

Sekuel kisah perjalanan di TOKI:

No comments :

Post a Comment