Skip to main content

Mengikuti ICPC 2019 Bagian 1: Jakarta Regional

Halo, sudah lama tidak berjumpa!

Semester ini aku terlalu banyak kegiatan jadi lupa ada blog ini. Jadi, liburan semester ini bakal ada banyak blog-blog yang bakal keluar ^_^. Kali ini, aku bakal nyeritain pengalamanku mengikuti ICPC lagi tahun ini.

ICPC, The International Collegiate Programming Contest adalah lomba programming yang setiap tahun diadakan. Tentunya aku ikut lagi dong. Apalagi, sudah dibekali ilmu dari matkul TKTPL saat semester 2. Peminat CP di UI lumayan banyak, jadi diadakan seleksi untuk masuk tim intinya. Aku lolos :D.

Pembentukan Tim

Aku gak perlu mikirin mau ngetim siapa, karena komposisinya sudah ditentukan oleh Pak Denny. Aku dapat tim bareng Kak Norman dan Budi. Aku lumayan seneng dengan timku. Tahun lalu, aku ngetim Kak Norman juga jadi sudah tahu kemampuan masing-masing. Budi, aku sudah sering ketemu saat ngajar di pelatnas 2 dan pelatnas 3 dan skillnya jago, Aku mikirnya dia bakal ngecarry kita, hehe. Oh, kita kebagian regional Kuala Lumpur. Jadi, selain ke Jakarta, kita juga akan bertanding di Kuala Lumpur nantinya.

+ Membutuhkan panitia.
Yang di unsend itu setuju awalnya lho :v

Sudah pengetahuan umum kalau nama-nama timku harus keren, meskipun aku ga kreatif ngasih nama. "Irasional", "Klepon", "Pisang Goreng", "Semoga ayas juara versi empat titik nol-nol", "Prajurit Kolonel Sanders", pokoknya masalah nama tim biasa memakan waktu banyak dan adalah suatu hal yang pivotal kalau ngetim dengan aku. Karena tidak membuahkan hasil, kami memutuskan untuk menggunakan nama tim "Maling AC". Kenapa? tunggu part 2 ya

Awalnya aku bersemangat karena bakal ke kuala lumpur. Tahunya site kita dipindah ke Bangkok, Thailand. Selain Thailand saingannya berat dan ada timnya Salman, tahun lalu sudah ke Thailand :"( meskipun kotanya beda. Ya, Aku sadar kalau aku sudah ga seambis ketika maba, jadi semangat latihanku menurun sedikit. Drop lagi setelah sadar yang nonmuslim cuma 2 orang.


wajah merefleksikan bagaimana kondisi angkatan masing-masing

Indonesia National Contest (INC)

Untuk regional Jakarta, ada "babak penyisihannya", INC. Yang lolos INC ini sebenarnya banyak, 40 tim. Namun, tim kami ngincer juara dong! tahun ini top5 dapat hadiah. Lombanya online jadi UI ngerjain di fasilkom. Timnya Hocky "Quantasaurus Tiguerra" duduk di belakangku, Mr. Star, i dont feel so good.

=== INC Dimulai

Scoreboard: https://competition.binus.ac.id/inc2019/

Soal A banyak yang AC di menit pertama. Langsung Kak Norman membaca dan kita bisa AC di menit ketiga kontes. Soal A AC.

Meanwhile, daritadi aku baca soal K. Bodonya aku mikirnya kejauhan sampe mikir ke mobius-mobius gitu. Aku lempar deh ke Kak Norman lagi :"). Ternyata observasinya itu kalau pairnya ganjil - ganjil atau genap - ganjil, gcdnya pasti ganjil sehingga bisa di greedy. Setelah 10 menit, soal K AC. Tim kita sudah ac 2 dengan Kak Norman carrynya. Sambil Kak Norman ngoding tadi, aku ganti baca M, soal math.

Menurutku soal M bau-bau DP. Aku lalu mencoba memodelkannya sebagai permasalahannya matrix exponentiation atau array exponentiation. Ya, aku bisa mendengar tawa juri yang membaca blog ini. Aku oper deh ke Kak Norman yang jago hal gini. Eh, setelah dipikir-pikir, aku jagonya apa yak? ._.

Meanwhile, ternyata ada yang diam-diam mengerjakan I dan dapat mengACkan dengan cepat! Aku bahkan baru tahu soal itu saat menulis blog ini. Tokorode, soal I AC di menit ke-14! Sekitaran segitu aku nyadar F ada beberapa yang AC dan membacanya karena kebetulan lagi gaada problem. Ternyata masalahnya cuma ganjil-genap. Yaudah deh koding kilat dan di menit ke-18, problem F ac!

Budi ternyata mengerjakan mengerjakan C daritadi. Selesai aku AC F, aku dikasih tahu soal C beserta observasinya. Aku langsung kepikiran solusi Treapnya. Tunggu dulu, ini kan INC, gamungkin dong ada treap xD. Setelah dianalisis lagi, ternyata bisa di solve menggunakan BIT + multiset. Ya, aku ngoding ini menggunakan prinsip OOP DDP2 karena sangat sensitif terhadap bug. Hasilnya? soal C tim Maling AC first solve!! Gaada hadiahnya tapi :(

Selama aku ngoding C. Budi & Kak Norman ngerjain B dan D. Aku inget sempet bantuan Kak Norman implementasiin kode bridgenya untuk D, jadi Budi pasti ngerjain B. Ya, B dan D AC pada menit ke-42 dan 46 secara berturut-turut!

Budi lanjut ngerjain M. Ternyata solusinya pakai kombin doang. Budi bingung kenapa WA. Aku coba utak-atik modular inversenya. Submit, AC?! Kita bingung, mungkin kode sebelumnya lupa di save atau salah submit XD. soal M AC

Aku dan Kak Norman lalu membaca H karena ada beberapa yang AC. Tidak lama, kami sudah kepikiran idenya dan aku koding. Intinya greedy + DP untuk mencari banyaknya path yang mungkin. Seperti biasa, WA dulu karena lupa long-long. Tapi tidak perlu menunggu lama, soal H AC :)

 Sementara Budi mendebug solusi Lnya, Kak Norman nemu pola untuk soal E, deret tingkat 3 :D.  Kami lupa rumus deret tingkat 3 apaan, jadi buka website anak SMA wkwkwkwk. Jadi ketemu ide segtree lazy. Aku yang ngoding, tapi diawasi Kak Norman. Ini ngodingnya lama karena kami sering berdebat masalah menyimpanan dan propagatenya. Aku bingung beberapa kali karena ada beberapa hal yang zero-based, ada yang one-based -_-".  Bug Lnya Budi ketemu, dan soal L AC :D, Maling AC ada di top 5!!

Setelah bingung sejaman, akhirnya kodingan segtree rampung. Di submit, dan WA! Ternyata soalnya minta modulo dan kita engga modulo! oww. Tambah modulo, dan masih WA! Karena aku cuma modulo hasilnya doang, aku ngiranya kalau modulo selisih tingkat 2 dan 3nya bakal ngaruh, ternyata Kak Norman buktiin ga ngaruh. Yowes, AC!! Maling AC peringkat 2 untuk sementara! "Dadah Rey!" - Kak Norman. Dua menit kemudian, tim Quantasaurus AC L dan kita disalip lagi...

Tinggal dua soal lagi, G dan J. Waktu tinggal ~40 menit. Aku baca J karena constraint kecil dan Budi baca G. Coba DP Profile di J tidak membuahkan hasil.

Galang: "Bud, soal G gimana?"
 Budi: "Geometri"
Galang: "Ok skip!".

Etapi setelah dijelasin mirip-mirip shortest path gitu. Setelah dirembungkan, kami memutuskan untuk konsentrasi menyelesaikan soal G saja.

Ketika dibelakangmu timnya rey

Udah beberapa observasi gila ditemukan, salah satunya adalah konstanta golden ratio, yang menunjukkan pukulannya bisa sangat terbatas. ~15 menit terakhir aku propose solusi pake itu. Budi ngasih counter case dengan posisi bola di tengah course. Aku bingung, bukannya bolanya harus mulai di ujung course? HIYAA ternyata daritadi aku salah nangkep penjelasan soal dari Budi.

Yah, kami ketawa dan mengakhiri percobaan INC ini dengan sisa 15 menit. Dengan penalti monster, kalau ada yang jumlah acnya sama, akan menggusur kami. Beruntungnya tidak ada sehingga kami dapat juara 3 di INC!!

=== INC Selesai

"Maling 10 juta" - Hocky

Ini adalah performa terbaikku di suatu kontes ICPC. Etapi, setelah post-mortem, aku sadar kalau kontribusiku ga banyak. Terutama M yang overthink parah, padahal aku yang paling banyak menginvestasikan waktuku disana. Ya, aku sadar ICPC kali ini aku di carry. Makasih tim :).

ICPC Jakarta

untung gajadi membutuhkan panitia, wkwkwkwk

Kami tetep latihan tentunya. Kupon grab diskon 50% memang manjur kalau pesennya barengan, bisa menikmati makanan mahal dengan budget yang pas xD. Ya, saat ICPC Jakarta, aku merasa lebih siap dari sebelumnya.

Practice Session


Ketika harus sampai pacil jam 6.30 sedangkan kamu bangunnya jam 6

Pas banget aku sampai disana, busnya baru mau berangkat berangkat. Keberuntungan masih di sisiku :D. Kemarin malem memang aku engga banyak tidur karena hari ini cuma practice session. Jadi di bus dan di pembukaan aku tidur :(. Saat bangun, tahu-tahu saja sudah mobilisasi makan siang.

Makan siang, aku buka scoreboard gemastik yang jalan hari ini. Sangat disayangkan gemastik dan ICCP jalannya bareng sehingga tim UI ga full power. Ada soal A yang jumlah WAnya numpuk. Soalnya itu nyari running median. Kata Pak Denny, mereka pada TLE. Ternyata harus pake algo yang konstantanya di optimasi. Anw, tim UI dapat juara 2 & 3 Gemastik...

Budi: "Plannya apa?"
Galang: "AC-in semua soal lalu habisin snacknya"
Ternyata gaada snack -_-

Practice session, seperti biasa, kita coba incer first solve cuma buat sekedar flexing. Ada soal ICPC Jakarta tahun lalu yang Kak Norman AC-in, dan ada soal day 0 OSN. Sisanya soal mudah. Kita bisa solve semua soal dan menjadi best national team UwU.

...untuk sementara. Lalu digusur karena penalti.

Ada ayam, udang, sapi, capcai, ikan. Mantap guys

Sehabis practice session, kayanya langsung pulang? pokoknya masih sore gitu deh waktu kita sampai. Aku langsung aja pulang sih. Malemnya aku ngerjain ICPC Jakarta tahun lalu dan sukses implement semua solusinya, setelah lihat pembahasan tentunya, hehe.

Contest

Oke, aku belajar dari pengalaman. Kali ini aku jam setengah 6 udah bangun >:(

Perjalanan lancar. Sampai di Binus aku ga banyak beraktifitas. Langsung saja deh kontes

== kontes mulai

Strategi kami adalah bagi mod 3. Jadi Budi kelipatan 3, Kak Norman 1 mod 3, aku 2 Mod 3. Alasannya karena soal mudahnya bisa saja kesebar. Soal A dihujani AC. Jadi Budi Ackan juga dengan cepat. Soal A AC

Aku sendiri baca E. Aku merasa ini soal gampang. Ide pertamaku adalah nyoba coordinate compress arraynya lalu berikan itu sebagai jawaban. Karena, pasti itu yang lekiksografi kan? Aku sudah coding segala dan uji sample, hasilnya beda. OOF... ternyata dua buah nilai beda bisa saja nadanya sama pada array hasil. sadboi. Yaudah, karena sudah ke ranah greedy, Kak Norman deh yang ambil alih.

Soal C mulai didatangi AC, jadi Budi baca sendiri dan bisa ACkan dengan cepat (C AC). Sedangkan aku? baca B karena ilustrasi. Menurutku B sangat solveable dengan DP on Tree. Aku ketemu 3 state, namun sangat banyak cornernya. Codingannya isinya tambal-tambalannya doang. Setelah 2 jam memakan waktu di B, masih belom ada satu pun tim yang AC B. Timku mulai meragukanku, aku juga ragu, mungkin B tidak semudah itu. Yaudah, aku pindah dulu ke soal lain yang lebih solveable. aku minggir ke K.

Meanwhile, Budi & Kak Norman khusyuk banget ngerjain H. Aku tidak tahu itu soal apa jadi aku fokus ke soalku saja. Tahu-tahu H ac! Aku tetep fokus K. Aku kelihatannya sudah nemu rumus DPnya. Ideku iterasi dari batunya, DP[batu][sisa_tipe_1][terakhir_ambil_tipe_3?]. Cara ngisinya setiap state kita bisa deduksi jumlah tanah kosongnya lalu coba-coba mau berapa batu tipe 1  & ambil tipe-3 engga, sisanya greedy tipe 2. Setelah sejaman bingung kenapa TLE, Kak Norman menunjukkan kalau solusinya O(N^2), haduu.

Yah, aku lalu mikir pasti ada observasi greedynya. Tapi karena aku gajago greedy, aku pakai haram no jutsu. Asumsikan jumlah batu tipe-1 pada setiap interval maksimal diambil antara 1 sampai 20, atau dari jumlah_batu - 20 sampai jumlah_batu. Submit, sial! WA!! Baru inget ini bukan pelatnas -_-

Kontes sudah memasuki jam-jam terakhir. Kak Norman akhirnya bisa AC E di menit ke-219! Lumayan tertolong lah. Lalu Kak Norman membantu optimasi solusi L Budi yang sudah 2 jam TLE. Sementara aku coba mikirin K karena banyak yang AC. Ga kepikiran duh >_<.

Jadi, aku coba assist Budi & Kak Norman. Jadinya Kak Norman ngerjain G yang katanya sudah ada ide. Aku bahkan baru tahu soal L apaan di jam terakhir lul. Aku lumayan ngerti solusi maxflownya Budi dan optimasinya. Lalu aku sadar kalau ternyata algo maxflownya yang bikin TLE, bukan konstanta. Kira-kira ini yang terjadi.

Galang: "L kenapa?"
Budi: "TLE"
Galang: "Oh, sini aku tambahin random"
L AC one try (setelah random)!

reaksi Budi dan Kak Norman

Lalu sisa waktu kita fokuskan ke G. Kak Norman sudah selesai ngoding dan submit. WA! Coba bugfix semaksimal mungkin, masih WA! Yah, sampai akhir ga AC dan suara tepuk tangan terdengar.
== kontes selesai


ya, aku gaada nyumbang AC samsek. Cuma L yang aku ada kontribusi, itupun cuma "randomisasi" solusi :"). Performaku jauh lebih buruk dari tahun lalu. Aku sedih, tapi sadar diri juga kalau aku ga seambis tahun lalu.

Ya, pelajaran penting dari sini adalah komunikasi. Budi & Norman menghabiskan hampir 3 jam untuk debug L, sedangkan dengan "magic"ku bisa di ACkan dengan cepat. Pengalaman yang aku dapat adalah jangan kebanyakan gonta-ganti soal di awal, nanti ga ketemu kalau soal mudahnya sudah di solve. Berkebalikan dengan tahun lalu, dimana justru pelajarannya jangan berkutat di satu soal. Ya maklum, skill pas-pasan xD. Ah, jangan lupa baca semua soal, nyesel banget ga baca soal centroid :(.

Pengumuman, kami ac L, soal terakhir. Jadi biar nipu kami submit di semua soal biar pada terkejut. Worth it! (ketawanya Igo)





Sayangnya ada 1 soal yang kita submit dapetnya compile error -_-".

Lanjut pengumuman, setidaknya tim kami terjamin medal silver dari INC yah :D. Lalu seperti prediksi, kami dapat national silver medal. Jadi tahun ini dapat double silver. Ini jelas adalah performa yang lebih baik dibanding tahun lalu yang cuma dapat 1 bronze, tapi boong.

jaketnya mirip jaket silat ye, aku suka

Beneran gaya silat dong

Ada makan malam berisi banyak pilihan makanan. Belajar dari tahun lalu, aku ga bakal ngambil carbonaranya karena auto kenyang. Yes, tahun ini aku nyobain berbagai jenis makanan seperti salmon, kambing, steak, dst. Aku akhiri dengan carbonara biar nendang di perut.

daging kambingnya enak banget :D

 Yah, aku lupa kalau eksrim + pancake disini enak. Aku ga belajar dari tahun lalu dan telat ngambil eskrim pancake. Gadapet lagi huhu :"(



Ya, dengan itu, ICPC Jakarta berakhir! Kami sudah dapat banyak pelajaran dan tentunya akan memberikan performa yang lebih baik di ICPC Bangkok seminggu setelah ICPC Jakarta.

Comments

Popular posts from this blog

Fasilkom Semester 3 Bagian 1: Kerja dan Kelompok

Yess! jurnal semesteran is back. Ini tahun yang super sibuk bagiku. Jadi, aku bakal bagi jurnalnya jadi 2 bagian: akademis dan nonakademis. Alasannya biar ga panjang-panjang dan bisa fokus aja sih. Ya, selamat menikmati.

SIAK WAR & Nasib Matkul SIAK WAR, waktu memilih matkul bagi anak UI.

Bukan galang namanya kalau ga kalah siak war. Waktu war, aku masing magang di OVO. Aku udah double-triple check kalau wifi OVO yang kenceng bisa buka SIAK. Aku sudah rela datang ke kantor sebelum waktu mulai kerja demi war. Tapi, kok siaknya gamau kebuka ya? aku kiranya down. Taunya, temen-temenku bisa. REEEE.

Aku struggle terus selama beberapa menit. Gak bisa-bisa! Oh noo. I saw my life flash before my eyes. Akhirnya, aku kepikiran ganti ke tethering HP dan siak lancar jaya. Tapi apa boleh buat, perang sudah selesai dan aku tidak mendapatkan 5 dari 7 matkul yang aku inginkan.


Kalah war efeknya jangka panjang. Seminggu aku habiskan membuka website siak & scele untuk mengecek penambahan kapas…

Intern Semester 1: AI Engineer di GDP Labs

Intern atau magang, suatu kegiatan untuk merasakan suasana kantor. Daripada tidur-tiduran ngewibu gajelas selama sebulan, lebih baik ngoding 8 jam sehari di kantor kan?
Pertama tahu GDP Labs dari lomba BNPCHS 2017. Waktu penutupan, Pak On Lee, CEO GDP Labs, bawa seminar. Terus kan di akhir acara aku kenalan dan dikasih kartu nama :D
Aku awalnya berminat mau magang semester 2, namun temenku Rania semester 0 udah magang di GDP Labs. Aku jadinya daftar magang winter sebagai AI Engineer dan keterima :) Aku ditaro di bagian GLAIR (GDP Labs Artificial Intelligence Research).
Bagian-bagian dari blog ini: - Tentang GDP Labs - Kosa Kata Machine Learning - Onboarding (19 Desember 2018) - Minggu Pertama (26 - 28 Desember 2018) - Minggu Kedua (2 - 4 Januari 2018) - Minggu Ketiga (7 - 11 Januari 2018) - Minggu Keempat (14 - 18 Januari 2018) - Minggu Kelima (21 - 25 Januari 2018) - Minggu Keenam (28 - 31 Januari 2018)
- Penutup
Iklan Sejenak Tentang GDP Labs
GDP Labs itu bagian dari GDP Venture. GDP…

Jurnal Pelatnas 2 TOKI 2018, Minggu 3: Gochisōsama (+MIT Application)

Catatan: dikarenakan betapa gregetnya minggu terakhir ini, aku sama sekali gak sempet nulis harian seperti pada jurnal-jurnal sebelumnya. Berdasarkan nilai kuis minggu ini dan nilai-nilaiku minggu lalu, performaku divonis menurun oleh Pak Rully. Maka, minggu terakhir ini aku memutuskan untuk fokus total pada pelatnas dan ga ngeblog harian seperti biasanya. Aku baru bisa mulai menulis sepulangnya aku dari pelatnas 2. Jadi gaya penulisan pada tulisan ini bakal sedikit berbeda. Artinya gaada ROTD :(

Pelatnas 2 sudah memasuki minggu terakhir, dan seperti yang ditulis pada catatan diatas, minggu ini bisa jadi merupakan minggu yang paling menantang dalam karir komputerku.

Rabu, 7 Maret 2018

Ah, hari rabu, hari maut…

Seperti yang sudah diketahui, Setiap hari Rabu bakal diadakan kuis, semacam tes penilaian yang bobotnya sangat besar dalam menentukan siapakah yang bakal lolos ke pelatnas 3 nantinya. Setiap pagi selalu diawali dengan hal yang sama yakni dibangunin Kak Dimas (Sepertinya bebera…