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

  1. Online Casino Site ᐈ Top Games for Real Money
    casino site 파라오 카지노 game platform has been in operation since 2007 and now the top casino site at the highest levels for casino gambling and gambling.

    ReplyDelete

Post a Comment

Popular posts from this blog

Menjadi Maba yang Penuh Ketidaktahuan

UI baru saja selesai UTS tadi, dan UTSnya sangat greget. Postingan sebelumnya sebenernya hanya untuk bilang kalau sekarang aku punya domain, ini postingan yang sebenernya. Jadi kali ini aku bakal buat nyeritain gimana aja sih selama 3 bulan pertamaku kuliah di UI.  Catatan: bukan berarti bakal ada update tiap 3 bulan ya, wkwkwk. Kurang lebih postingan ini jadi karena sangat banyak kegiatan-kegiatan "orientasi" yang aku alami dan sudah terlalu banyak bahan. Aku yakin nanti kegiatan perkuliahannya bakal membosankan dan mungkin saja bakal update 1x pertahun. Kamus: Maba = Mahasiswa Baru. Pacil = Fasilkom. Kutek = Kukusan Teknik (daerah di belakang UI) Kukel = Kukusan Kelurahan (daerah di belakang UI) Detos = Depok Town Square (Nama suatu pusat pembelajaan di Depok) kuis = ulangan PA = Pembimbing akademis (Paling mirip dengan "wali kelas" di SMA) KAMABA Singkatan dari Kegiatan Awal Mahasiswa Baru. KAMABA  dibagi me

Jurnal Fasilkom Semester 6: Konteks

Halo lagi, Ketemu lagi di blog semesteran ini. Kali ini aku mau ceritain gimana sih aku menjalani semester 6 di Fasilkom UI. Kondisinya masih pandemi, jadi kegiatan perkuliahan masih full online. Pada semester ini, kalian akan ketemu dengan satu-satunya matkul di Fasilkom yang kuambil di tiga semester . Sebelum-sebelumnya kegiatanku selalu sibuk yah :| Semester 3 ngambil 22 sks + 3 organisasi + asdos Semester 4 ngambil 22 sks + PIC compfest + asdos Semester 5 ngambil 17 sks + part-time Bareksa + asdos Waduh semester 6 sibuk apa aja nih? -_-, semester 6 ini aku: gak ngambil sks banyak (dibawah 20) gak part-time/full-time gak ikut kepanitiaan lagi, apalagi jadi ketuanya gak ikut kegiatan external "Wah Galang mau santai?" tujuannya begitu :( Pingin sekali-sekali ngerasain gabut jadi aku menghindari hal-hal yang potensi sibuk, aku bahkan resign dari part-timeku karena ingin fokus akademis.  Sayangnya sepertinya aku magnet kesibukan, berasa gak tenang aja kalau ada waktu gabut. Ba