Monday, 27 July 2015

ACM ICPC World Final 2015 - Morocco (Bagian 2)

Daftar bagian tulisan:

Hari 3

Akhirnya tidur pulas dan saya bangun pukul 07.30. Ternyata nama hotelnya adalah Hotel Palmerie yang sempat salah saya baca sebagai "Palmerah". Kami pergi sarapan ke restoran, dan saya makan banyak roti dan buah. Roti di sini sangat enak, terutama yang teksturnya lembut atau renyah. Kalau dari Pak Denny, mungkin rotinya bisa enak karena Maroko mendapat banyak pengaruh dari Prancis. Yang saya suka adalah croissant dan pain au chocolat. Namun saya kurang suka dengan roti varian lain yang teksturnya keras.


Musik yang seperti di acara TV buka puasa ternyata alat musik senar

Setelah selesai sarapan, saya mendapat email bahwa saya mendapatkan kacamata hitam. Ammar dan Soko juga mendapatkannya. Kami mengambil hadiahnya dan kini tidak perlu khawatir dengan sinar matahari siang yang menyilaukan.

Acara hari ini sebenarnya tidak ada yang khusus, hanya beraktivitas di chillzone saja. Padahal, chillzone baru buka pukul 15.00. Kami pun jalan-jalan di sekitar hotel, berhubung hotelnya sangat besar, dan kemudian bertemu dengan Irvin + Nathan. Waktu sampai siang dihabiskan dengan mengobrol.


Chillzone yang tak kunjung buka

Hotel yang kita tempati sangat luas. Sepertinya harganya pun sangat mahal. Struktur hotel ini bukan gedung pencakar langit. Tingginya hanya 4 lantai, tetapi gedungnya sangat luas. Sambil menjelajahi hotel, saya menemukan beberapa hal lucu.


Apakah udara panas dan kering mengakibatkan ini?


Mata air yang dari waktu ke waktu mengeluarkan air dalam intensitas berbeda-beda (diambil dari berbagai waktu)

Tiba waktunya untuk makan siang, dan kami diberikan kantong berisi makanan. Isinya:
  1. Roti keras
  2. Roti agak keras berisi selai sayuran
  3. Roti agak keras berisi daging kalkun dan sayuran
  4. Sekotak besar salad berisi sayuran 4 warna: oranye (wortel), ungu (kol ungu), putih (kol), dan hijau (selada)
  5. Sepotong brownies
  6. Sebungkus keripik kentang
  7. Sebuah apel

Makan siang ini porsinya besar sekali. Saya mulai dengan memakan roti agak keras berisi selai sayuran, sambil makan saladnya. Saladnya tidak habis-habis dimakan, karena porsinya yang besar dan rahang saya yang sudah lelah mengunyah (rotinya keras!). Dengan penuh perjuangan akhirnya saladnya habis, beserta roti keras lainnya. Saya menyimpan roti agak keras berisi kalkun, apel, dan keripik untuk sesi makan "berikutnya". Untuk browniesnya, rasanya sangat enak! Luarnya renyah, dalamnya lembut, dengan sesekali hazelnut di dalamnya.


Akhirnya habis juga

Seusai makan kita mampir ke kamarnya Irvin, berhubung dekat dengan restorannya sambil menunggu chillzone buka. Saya lanjut makan roti agak keras dengan kalkun, lalu tidur siang.

Setelah jam 15.00, kami mampir ke chillzone lagi, tapi di sana sepi! Tidak ada tanda-tanda bahwa ada kegiatan di sana. Akhirnya saya hanya mengambil cokelat gratis di chillzone, lalu kembali ke kamar hotel untuk mengerjakan ICPC Quest lainnya.

Menjelang malam, tim BerinGAS berlatih sebagai pemanasan sampai 20.00, dilanjutkan dengan makan malam. Makan malam ini sifatnya buffet, dan saya makan secukupnya. Setelah makan, kita berdiskusi bersama Pak Denny, kembali ke kamar, mandi, lalu tidur.

Hari 4

Hari ini bangun jam 7.30 lagi. Kami sarapan di restoran Palmerie yang dekat kamar. Variasi makanannya lebih sedikit, tapi menarik.

Acara hari ini adalah Techtrek dari IBM. Kami berkumpul di ruangan Techtrek pukul 10.00. Techtrek kali ini menceritakan sejarah IBM sejak zaman dahulu, kemudian memperkenalkan IBM Bluemix, mengajarkan filosofi hidup, dan sebagainya. Acaranya cukup menarik, dan saya mendapat banyak informasi seputar teknologi terkini, seperti Docker, Twilio, dsb. Karena waktu terbatas, mereka meminta kita datang ke chillzone untuk mendapat informasi lebih.


Techtrek


Para orang Indonesia

Selesai acara, kita makan siang di kolam renang dekat Palmerie. Sambil makan kita berbincang2 dengan tim Singapur terkait dengan rencana regional ke depannya, berhubung Singapur akan mengadakan Regional pada tahun 2015.

Setelah makan, kita mampir ke chillzone, berharap ada tanda-tanda kehidupan di sana. Sayangnya sama saja, hanya ada kegiatan di dalam ruangan untuk orang yang mau bertanya-tanya soal IBM. Soko sudah menyiapkan rencana B untuk kejadian ini, yaitu membawa board game Coup. Kami beserta Irvin dan Nathan kemudian bermain Coup sampai waktu pembukaan dimulai.

Untuk pembukaan, acaranya diisi dengan sambutan-sambutan dari petinggi. Modelnya seperti tahun lalu, yaitu "backtracking". Ada seorang "main thread",kemudian ia memanggil "thread" lainnya untuk memberi sambutan, dan "thread" itu bisa jadi memanggil "thread" lainnya lagi. Setelah suatu "thread" selesai memberi sambutan, waktunya backtrack atau callback ke "thread" yang memanggilnya.


Pembukaan

Selain sambutan, ada juga pembagian award yang banyak. Untuk acara hiburannya, ditampilkan grup musik, penari, pelukis cepat, dan orang pantonim. Hal yang lucu adalah ada pemain terompet yang terompetnya sangat panjang. Ada juga tari-tarian yang entah mengapa modelnya seperti "dance battle", awalnya semuanya menari, kemudian semuanya mundur kecuali 1 orang. Setelah 1 orang ini menari2, dia mundur dan digantikan oleh penari lain, dst. Oh ya, ada juga diputar rekaman musik kebangsaan ICPC, yaitu ICPC Ceremony & Fanfare.


Terompet panjang

Beres pembukaan, kita kembali ke kamar dan beristirahat sebelum makan malam diberikan. Untuk malam ini, ternyata makan malamnya tidak di hotel. Kita pergi ke restoran dengan bus yang antriannya "synchronous". Restoran ini sangat besar, dengan berbagai atraksi yang menyambut kita. Ada cavalry dengan orang berbaju putih dengan senapan, ada camel rider, penari, dan pemain terompet panjang lagi.


Antrian panjang padahal bisa dibuat asynchronous


Cavalry bersenapan


Terompet panjang lagi

Untuk makan malam, kami duduk semeja dengan orang-orang Stanford. Coachnya adalah orang Korea dan masih muda, sementara pesertanya adalah 3 orang Cina. Kita banyak berbincang-bincang soal cara berlatih, proses seleksi IOI (nyambung ke ICPC), sampai seputar konsep bahasa-bahasa di Asia Timur/Tenggara.

Sekitar 21.30, makanan yang disajikan adalah sup asam manis asin, roti besar, ayam kecap yang besar, kus-kus, makanan penutup seperti dodol, dan buah-buahan. Saya sangat kenyang dan sudah cukup mengantuk. Saya berharap untuk segera pulang, tapi ternyata di lapangan restoran terdapat atraksi cavalry. Di atraksi ini, ada juga pemain terompet panjang, "dance battle", dan karpet terbang (dengan kabel). Akhirnya kami menonton sejenak sampai 23.00, barulah bus bisa dinaiki dan pulang.


Atraksi cavalry

Hari 5


Hari ini jadwalnya adalah dress rehearsal, atau gladiresik. Kita sarapan pukul 08.00, kemudian bersantai di kamar sampai 09.45, baru berangkat ke tempat lomba. Seperti tahun lalu, tidak boleh membawa barang elektronik, makanan, atau minuman ke lokasi kompetisi.

Sesampainya di tempat kompetisi, kita diberi kesempatan berfoto sambil memegang piala ICPC. Sepertinya hal ini menjadi tradisi dari WF dari tahun ke tahun. Setelah itu, kita mengerjakan soal latihan yang berupa soal-soal tahun lalu.


Foto bersama piala


Foto dari Pak Denny

Seusai gladiresik, kita makan siang. Sambil makan siang kita berbincang-bincang dengan orang-orang dari Iran dan Mesir (yang lain), berhubung kita semeja makan. Kita membicarakan tentang tata penamaan orang Timur Tengah dan Indonesia. Ternyata orang Timur Tengah wajib menggunakan nama bapak di belakang namanya, atau bahkan nama kakek dan buyut. Mereka bilang bisa saja ada orang yang bernama Muhammad Muhammad Muhammad Muhammad. Kami juga mendapatkan informasi tentang tempat perbelanjaan suvenir dari seorang volunteer bernama Ali Aghmadi.

Kami menyadari bahwa waktu membeli suvenir hanya hari ini. Sebab besok adalah hari kontes, yang acaranya seharian, dan lusa sudah harus kembali. Oleh karena itu kami pergi ke pasar yang diberi tahu Ali. Beruntungnya, kami bisa naik mobil shuttle yang disediakan hotel. Masih ada jadwal untuk 16.00 dan pulang 17.30. Jadi kami kembali ke kamar dan tidur-tiduran.

Sesaat sebelum 16.00, kami pergi ke lobby dan mendapati bahwa mobilnya sudah penuh, sehingga terpaksa naik taksi. Kami dibawa ke sudut ruko-ruko yang agak sepi, dan diantar naik ke lantai atas untuk belanja. Sayangnya barang-barang di sini sangat mahal, dan tidak cocok dengan selera kita. Pak Denny menyadari bahwa kita sedang ditipu, diantar ke tempat yang mahal dan aneh. Berhubung sudah dicatat koordinat pasar yang diceritakan Ali, Pak Denny harus ngotot ke supir taksi untuk diantar ke sana. Memang harus ngotot, karena si supir taksi juga ngotot supaya kita belanja di tempat mahal itu :|


Tempat mahal


Berberes

Akhirnya tiba di pasar sesungguhnya. Di sini ramai dan tokonya sangat banyak. Sayangnya waktu kita sedikit, karena supir taksi yang tadi terlihat bete dan kita meminta waktu belanja 45 menit. Kami langsung jajan dengan kilat, membeli suvenir yang bisa diberikan secara massal. Oh ya suvenir paling lucu adalah boneka unta, yang kata Irvin kalau dimasukkan ke plastik jadi seperti kue pukis.


Tiba di pasar


Suasana pasar


Wujud unta <-> wujud pukis

Setelah sukses jajan, kita pulang ke hotel dan beristirahat untuk kontes esok hari.

Hari 6

Hari ini adalah hari kontes sesungguhnya. Saya bangun 08.00, lalu pergi makan. Setelah makan saya melakukan pemanasan otak dengan cara membaca soal OSN dan mencoba mengerjakannya. Ngomong-ngomong, untuk OSN saya ada menyumbang 3 soal. Sayangnya tidak satupun dari soal saya keluar pada kontes OSN hari 1. Yah semoga hari 2 soal saya ada digunakan.

Sekitar 10.00, kami menuju lokasi kontes. Seperti biasa, Pak Bill blusukan sambil memberi kesempatan peserta untuk menyentuh dan berfoto dengan piala. Tujuan lainnya untuk "collect DNA" dari seluruh peserta. Hmm.. mungkin suatu saat nanti mereka mau kloning peserta ICPC dari sel-sel kulit yang ditemukan pada piala itu.

Kami memasuki ruangan kontes, dan bersiap untuk mengerjakan soal. Selalu terdengar dan terbaca 'do not touch anything' dari John Clevenger. Sekitar 30 menit, kontes dimulai!

Ammar membaca dari soal A, saya dari E, dan Soko dari M ke atas. Tidak lama kemudian Ammar berkata "ini soal A kayak pernah ngerjain". Ia memastikan beberapa hal, kemudian mulai coding. Kami mendapatkan AC pertama pada soal A, menit ke-6. Cukup mepet untuk bisa jadi first solver, sayangnya direbut oleh Peking University pada menit ke-5.

Soal E yang saya baca terlihat solvable. Saya berpikir singkat untuk mengira-ngira solusinya. Berhubung sudah beberapa lama tidak ada titik terang, akhirnya saya pindah ke soal F. Soal ini sangat solvable, tinggal merancang beberapa hal. Setelah yakin, saya mulai coding dengan hati-hati, dan mendapatkan AC. Rasanya cukup senang karena sejauh ini segalanya berjalan cukup mulus.

Berikutnya komputer digunakan Soko untuk coding soal I. Saya dan Ammar memikirkan soal C, dan sampai pada solusi min cost max flow yang "ajaib". Saya tidak terlalu yakin ini bekerja, tetapi solusinya terlihat bisa bekerja. Berhubung kami menganut "YOLO", akhirnya saya memutuskan untuk mengimplementasikannya.

Setelah Soko mengumpulkan soal I, ternyata mendapatkan RTE. Kode dicetak dan saya mulai implementasi soal C. Rasanya agak kaku, berhubung terakhir kali saya coding min cost max flow sepertinya pada Pelatnas 3 TOKI 2011. Saya pun coding dengan hati-hati, mulai dari bagian Edmonds-Karp nya sampai bagian Bellman-Ford sebagai pengganti BFS. Sempat mendapat sedikit bug, dan akhirnya hasilnya sesuai yang diharapkan (benar untuk TC contoh). Karena kami YOLO, langsung saja di-submit... dan AC!! Saya senang sekali karena bisa mendapat AC untuk soal ke-3. Berikutnya saya membantu debug untuk soal I, sambil Ammar dan Soko memikirkan soal D.

Ammar dan Soko akhirnya selesai mendapat solusi soal D, dan Ammar mulai coding sambil Soko memikirkan soal L. Tidak lama kemudian Ammar dan Soko AC soal D.

Waktu lama telah lama berlalu, dan saya belum menemukan bug pada kode Soko. Benar-benar membingungkan mengapa bisa mendapat RTE. Pembagian nol? tidak. Array kekecilan? tidak. Memory limit exceeded? tidak. Stack overflow? tidak. Akhirnya kita sepakat untuk coding ulang soal I. Saya yang bertugas untuk coding I.

Saya sempat ngebug, kemudian dibantu Soko untuk debug solusi soal I saya. Setelah diperiksa dengan beberapa TC, kemudian solusi dikumpulkan... dan WA! Kami berusaha debug sambil Ammar memikirkan solusi soal J (tiling).

Sungguh disayangkan bahwa kami terjebak pada soal I sampai kontes berakhir. Sebelum freeze, kami berada di peringkat 63. Berhubung tidak mendapat AC tambahan, artinya peringkat kita pasti >= 63. Saya agak sedih, karena berharap bisa mendapat posisi 50 besar. Kini saya bisa hanya minum banyak soda sambil berharap untuk bertahan di posisi 70-an.


Makanan yang diberikan saat kontes: salad
Saya menolak memakannya karena trauma hari-hari sebelumnya

Penutupan pun berlangsung. Kami mendapati bahwa tim UI berakhir di peringkat 79. Memang berada di 70-an, tetapi cukup kritis. Saya tidak tahu harus senang atau sedih. Senang karena peringkat lebih baik? Sedih karena peningkatan peringkatnya hanya 18? Namun akhirnya saya menyadari, bahwa saya sebenarnya cukup puas dengan hasil kontes ini. Tahun ini tim UI tidak lagi terjebak dalam ketegangan yang bisa melumpuhkan kemampuan (bahkan sampai BFS pun tidak bisa!). Kami bisa menyelesaikan beberapa soal selain soal A, yang mana bukan soal kroco. Kami baru kedua kalinya masuk ke WF, dan ini masih awal perjalanan karir UI pada WF. Setidaknya ada peningkatan dari tahun lalu.

Medalis WF tahun ini kebanyakan adalah orang Asia dan Eropa Timur. Beberapa dari mereka mewakili universitas di Amerika. Kadang merasa lucu juga kalau melihat beberapa medalis yang wajahnya datar ketika naik ke panggung. Mungkin mereka berharap mendapat medali lebih baik?

Juara 1 dari WF sebenarnya tidak perlu dipertanyakan lagi, yaitu St. Petersburg ITMO dengan ujung tombaknya, Gennady. Kata Felix Halim, beberapa menit sebelum kontes berakhir dia lewat di meja tim tersebut, dan mereka tidak lagi coding. Artinya? Mereka AC semua soal.


Penutupan

Penutupan berakhir dengan meriah, dan acara pesta pembubaran dilaksanakan mulai 20.00. Kami kembali ke kamar, mengambil suvenir untuk dibagikan ke beberapa orang, dan beristirahat sejenak.

Pukul 20.00, kami keluar kamar dan mendengar bunyi-bunyi dari arah jalan. Ternyata ada arak-arakan, yang dipimpin oleh sekelompok orang memainkan perkusi dan volunteer ICPC yang menari-nari. Mereka diikuti oleh orang-orang ICPC di belakangnya (termasuk peserta), layaknya demo. Kami digiring menuju lapangan luas di belakang hotel, yang sepertinya bagian dari lapangan golf. Di sana ada banyak makanan, dan banyak orang. Akibatnya makanan banyak yang habis dan entah kenapa tidak diisi ulang kembali. Atau jangan-jangan sudah diisi ulang tapi langsung habis?


Demo!

Akhirnya saya makan sesuatu yang mirip dim sum, dan kacang-kacangan. Saya sudah cukup kenyang, dan saya memutuskan jalan-jalan. Kalau saya bertemu seseorang dari ICPC yang sempat berkenalan dengan tim kami, akan saya berikan oleh-oleh yang sudah saya beli dari Malioboro. Saya menemukan teman-teman dari Mesir (para Ahmed + Mohammed + Mahmud), Stanford, dan beberapa volunteer yang baik. Orang-orang volunteer ini sangat senang atas pemberian ini, sampai ada yang mau add FB saya.

Hari mulai dingin, dan angin kencang. Kami diajak oleh Asya untuk menari a la Maroko. Tariannya adalah sekelompok orang akan memainkan perkusi (gendang, dsb), kemudian orang-orang lainnya membentuk kerumuman dan menari-nari mengikuti irama. Sesekali, seseorang dari kerumunan akan diketengahkan, dan menjadi orang-orang kerumunan akan mengikuti gaya tariannya. Sambil menari, mereka juga melafalkan sesuatu yang diulang-ulang, seperti "hai ya wa ra hai ya wa ra" (baca dengan logat Arabic) atau sejenisnya. Tiba-tiba juga bisa jadi "soko soko" atau kata ngasal lainnya. Ternyata setelah diklarifikasi Soko, kata-kata yang dilafalkan itu tidak ada artinya, jadi memang bisa diisi oleh apapun. Mungkin "wololo wololo" juga bisa jadi alternatifnya.


Pesta malam

Setelah berpesta selesai, kami kembali ke kamar hotel dan packing. Cukup sulit melakukan packing, berhubung kami mendapat banyak barang tambahan dari ICPC ini. Benda-benda seperti maskot, mangkuk, dan kotak pensil agak sulit disimpan, berhubung bentuknya kaku dan makan tempat. Selesai packing, saya tidur.

Daftar bagian tulisan:

No comments :

Post a Comment