Skip to main content

Pengalamanku Ikut PCS UGM 2017

Jadi aku baru saja ngikutin lomba Programming UGM (PCS). Lombanya harusnya bertiga, namun aku ikutnya sendiri. Lolos xD. Nama “timku” untuk lomba ini adalah “Ngeramaikan Saja” karena aku ngerasa cuma bakal ngeramein doang.

Hari 1 (kesialan)

Aku bangun jam 7 pagi lalu langsung ke bandara dan naik pesawat. Sampai di Jogja baru dapat sms dari Kak Krisna (yang jemput aku) karena aku pake airplane mode jadinya baru bisa bales, dia jadinya baru otw. Aku nunggu sekitar 20 menit sebelum di telpon, aku bilang nunggu di terminal B deket KFC.
 “lho di terminal B kan gaada KFC?”
“ada kok, yang di depan itu”

Aku diminta ke kedatangan, tetap saja gak ketemu ketemu dia ._., Kak Krisna fotoin tempatnya dan aku kebingungan karena beda banget sama posisiku. Ternyata aku ada di terminal A! Kak Krisna pun ngakak di telpon. Berangkat deh ke hotel.

aku sampai hotel jam 12 lebih sedikit dan check-in baru bisa jam 2. Tapi karena kamarnya udah siap, aku dikasih langsung masuk kamar. Aku buka laptop  1 jam-an untuk ngecek perkembangan, lalu tidur.

Sejam kemudian aku dibangunin sama alarmku disusul oleh telponan  Kak Krisna nelpon, menandakan saatnya berangkat ke TM. Sayangnya panitia yang jemput aku katanya bannya bocor sehingga aku diminta naik ojek saja.

TM dimulai beberapa saat setelah aku sampai,  jadi berasa seperti nungguin aku :(. yang ngebawain TMnya Kak Krisna yang ternyata ketua panitia PCS.  Sistem lombanya rally, ada 5 pos logika, 5 pos programming, 5 pos game. Kalau mau masuk pos logika/programming perlu tiket dan kalau mau dapet tiket harus menang di pos game. Penyampainnya sebentar, tetapi sesi pertanyaannya sangat lama, aku juga menyumbangkan beberapa pertanyaan pertanyaan gak penting. Oh ya snack TMnya keren! sayangnya fotoku kedelete entah kenapa.

Di perjalanan pulang bersama Kak Krisna lagi, aku nanya tempat sate kambing enak untuk makan malam karena di Bali mahal. Malamnya aku nge-gym di hotel, lalu naik ojek ke tempat sate kambing, yang sayangnya habis dan tinggal ayam saja; itumah biasa di Bali :". Maunya nyari tempat lain, tapi karena sudah jam setengah 9 (waktu bali), aku memutuskan untuk makan di tempat mainstream yaitu waroeng steak. Aku pilih waroeng Steak yang nampak paling dekat; eh baru beberapa saat naik, di jalan sudah nampak cabang waroeng steak lain! tetapi karena tujuan sudah ditetapkan, gojeknya pura-pura gak liat xD.

Selesai makan, aku mesen gojek lagi, ditelpon
“mas, di WS ya?”
“oh, di waroeng steak”
“iya, WS kan?”
“waroeng steak”

oh

Setahuku, di Bali cuma ada satu waroeng steak, jadi ya kita gak buat singkatan singkatan kaya gitu :/. Karena internet abang gojeknya gak bisa, dia minjem GPS HPku. Aku sampai di hotel jam 11 malam, jadi sudah tepar dan gadapet belajar. Besok-besok, aku pesan antar saja deh -_-"

Hari 2 (keberuntungan)

Hari ini semifinal, di UGM sudah nampak orang imba seperti Kak Salman sama Kak Dhipta m(_ _)m. Sebelum mulai, dijelaskan kalau di pos itu minimal waktunya 7 menit. Jadi, kalau sudah selesai namun belum 7 menit, diminta nunggu dulu.

Pos-posnya nyebar dan tersembunyi. Akusih suka olahraga jadi jogging ke posnya. Aku ambil pos pertama yang agak jauh karena yang dekat pada ngantre. Di pos pertama aku jawab soal logika, langsung ambil soal susah biar greget. Soalnya minta nyari longest palidromic subsequence dari “akusayangbangetsamakamu”. Aku tahu cara DPnya, kurang efektif di dunia orat-oret jadi aku pake cara “feeling” aja dan bener dengan cepat.

Tadi aku dapat liat pos KenKen, sebuah sudoku matematika, jadi aku mampir kesana berikutnya. Sebelumnya, pernah ada professor ngajarin aku caranya main jadi aku cukup percaya diri. Jadi intinya battle lawan tim lain cepet-cepetan nyelesaiin puzzle KenKen. Tentunya aku selesai duluan huehue dan dapat 4 tiket (Menang pos games dapatnya tiket).

Berikutnya, aku ke pos programming yang ada di lobby. Wah, soalnya susah banget! Gak dapet poin satupun dan tiketku hangus satu. Aku ketemu pos programming lagi di lantai 2. Baca soal, “ini apaan sih maksud soalnya :’)". Soal tentang pola ga jelas.

Gak Hoki di percobaan kedua, aku masuk ke pos programming lain untuk ketiga kalinya. Aih, pola lagi, “Kayanya ada polanya” eh waktu habis. Jadi dari mengunjungi 3 pos programming tiketku udah hangus 3 tanpa menambah satu poin pun :(

Aku kepikiran solusi koding yang di lobby. Ternyata greedyku WA :( Aku lupa sampahin soalnya karena nyoba nyari greedy lain, jadi poinku untuk soal itu masih 0. Dan ini sudah percobaan keempat dimana poinku masih nol.

Aku balik ke pos pertama yang soal hardnya aku bener. Aku minta yang easy dapet pola-pola gak jelas, arrgghhh… my weakness! masih nol bung!

Aku main ke pos logika agak jauh dan minta soal easynya. Untungnya cuma greedy biasa, dengan cepat kuselesaikan. Karena tiketku lagi 1 dan waktu sesi 1 lagi 2 menit, aku kali ini udh bener bener kepikiran pos koding pertama itu. Dengan gaya Naruto, aku lari ke pos tersebut!

Sampai disana, diusir sama penjaga posnya katanya waktunya lagi 1 menit. Untungnya aku ingat aturan kalau waktu habis, di pos tetep jalan. Greedyku masih WA!!! Aku hanya bisa tersenyum dan menyampah soalnya. Walau sukses dapat parsial, aku masih belum dapat solusi fullnya.

bener 3... tiket habis... kondisi sangat kritis

Sebelumnya, kalau ada semacam rally aku hanya mengikuti alur. Tetapi, karena kondisiku yang kritis ini, saat ishoma aku melakukan hal yang belum pernah kulakukan sebelumnya: menyusun strategi! strategiku: hindari programming dan hajar habis logikanya.

Aku keingat soal pola di programming tadi. Sambil nunggu inshoma selesai, aku coba hajar soal itu dikertas. Ketemu solusinya, hehe (mudah-mudahan bener).

Ishoma, rally lanjut! aku lari ke pos KenKen untuk nyari tiket. Karena aku terlalu ambis, aku kalah! Aku ketemu pos games lain yang tidak ada hubungannya dengan sains yaitu palu dan pelindung. Sistemnya dibacain soal, lalu yang benar lari ngambil palu (botol), sedangkan yang kalah ambil pelindung (topi), apabila si palu berhasil getok yang salah sebelum dia dapat pelindung, maka si palu menang. Apabila si salah bisa dapat pelindung, maka dialah yang menang.

Kebetulan, aku cukup atletis jadi aku selalu duluan larinya. Sayangnya ini sistemnya 3 kali main jadi lama-lama staminaku habis juga untuk sprint dan aku kalah di ronde 3. Untungnya kalah tetap dapat tiket. Jadi dari pos KenKen tadi dan pos ini, aku sudah dapat 4 tiket.

Berbekal tiket-tiket itu, aku pertama hajar soal programming pola itu dan dalam waktu kurang dari 2 menit sudah AC. Karena minimal 7 menit,  ngobrol deh 5 menit deh dengan penjaga posnya :".

Karena pos logika ngantre, aku main ke pos game yang dekat. Gamenya hangman dan aku lawan Giovanni yang lombanya solo juga. Jadi dikasih 100 poin dan kita mempertaruhkan poin untuk jalan. Giovanni nebak 100 langsung karena mungkin ga ngerti aturannya jadi dia gabisa nebak lagi. Akupun nebak sambil nyanyi karena cuma ada 26 kemungkinan dan aku punya 100 tebakan “A B C D E F G H I J K L M N O P Q R S T U V W X Y Z“ hayo, siapa yang nyanyi xD. Setelah Y ketemu namanya TAPI antara ga dijelasin atau ga merhatiin, ternyata kalau dari semua huruf ketahuan, yang tergede yang menang. Giovanni dengan poin 0, dan aku dengan poin -20  akhirnya dialah yang menang :O. Ini ibarat attack CoC yang semua defensenya down, tapi bawa pasukan wallbreaker -_-

Aku ngerasa tiketku sudah cukup untuk sepanjang rally. Aku mulai berburu soal soal logika. Soal mudah dan soal sulit, kusikat semua tanpa salah! Ada sekali aku ambil soal programming dan dapat kesempatan ngoding bareng Salman M(_ _)M.

Pos terakhir, aku ambil soal susah. Jawaban salahku yang dapat -80  membuat perasaanku jadi masam; aku ga jogging lagi nyari pos. Waktu sisa 5 menit saat aku masuk ke pos logika terakhirku. aku ambil yang mudah. Soalnya minta nilai n terkecil bukan kelipatan 10 yang memenuhi floor(n^2/100) bilangan kuadrat (n>0, f(n)>0). Jawabannya kan 11 karena floor(121/100) = 1. Ini keliatan mudah dibawah batas wajar jadi aku nyari-nyari deskripsi jebakan tapi ganemu samsek. Yaudah aku kasi aja jawabannya, eh bener .-. . ketika waktu habis, nilaiku sudah aman!
dari 490 jadi 1405, berkat menyusun strategi

Ice breakingnya ada materi dari ugm dan games. Gamesnya aku vs Salman adu cepat konversi basis 10. Disini keimbaannya kelihatan dengan jelas, baru mikir dia udh dapat jawabannya m(_ _)m. Pemenang boleh milih mau KFC atau merchandise, dan yang kalah dapat sisanya. Aku yakin pilihannya sudah jelas, tetapi Salman pilih merchandise :v.

Ketika pembacaan peserta final, aku lolos dengan peringkat 2! Lalu ada kesan pesan dari orang orang tertentu, yakni ranking 1, aku sendiri (peserta solo), dan tim kelas 7 (karena kelas 7).


Kesanku rada ga guna:
MC: “kok  kamu milih solo?”
G: “iya, karena… terpaksa”

MC: “pos paling susah yang mana?”
G: *mikir bentar*
G: “kebetulan pos yang aku datengin mudah semua soalnya, kecuali pos programming yg di lantai dasar”

MC: “ada tricknya gak biar bisa solo?”
G: “gaada sih, aku cuman belajar ngitung lebih cepet aja :v”

Ketika pulang, aku semobil dengan tim kelas 7 beserta pembimbingnya.  Aku kasi sedikit tips untuk belajar programming. Sesampainya dihotel bajuku sebelumnya berserakan terlipat rapi di kasur o_o



Hari 3 (ke-nyesekkan)

Yah karena judulnya spoiler, sudah bisa ditebak lah endingnya gimana.

LO-ku minta HPku standby, jadi kubawa mandi. Hari ini dijemput panitia, dijalan jemput tim Fausta dulu. Sampai di UGM aku ambil kursi paling depan. Ada briefing lalu masuk lab.

Final ini sistemnya keren, yaitu duduk di lab. Ini baru seru! dibanding kemarin rally jalan-jalan capek dan kaki lecet :v. Sesi pertama logika. Tim sebelahku ngambil jatah kursiku satu. Karena gaenak ambil balik, aku ambil kursi diseberang. Memang, ngerjain soal lebih nyaman kalo ada senderan kaki.

Soal nya ada 20 dengan waktu 75 menit. tAku solo jadi aku optimalin waktuku. Aku ngerasa cukup bisa jawab. Ketika istirahat, aku tanya pada jawab berapa. Semua orang jawab minimal tiga diatasku .__., yaudah sih masih ada programming.

Programmingnya 8 soal 4 jam. Tujuh menit sebelum mulai, aku coba C++11 dan ga di support! Diumumin deh C++11 menang ga di support -_-. Okelah mulai, baca A, waduh kombinasi mematikan dari math polynomial dan parsing parah, skip. Baca B, jadi inget soal “membaca” OSN, skip. Baca C, soalnya minta banyaknya substring dari sebuah string yang habis dibagi 4.

Aku mikirnya cari bilangan berurutan 2 digit yang habis dibagi 4, maka semua substring yang berakhir di string tersebut habis dibagi 4, trus special case kalau panjang string 1. Ternyata constraintnya sialan, panjang string <=6. Secepat kilat koding loop bersarang dan aku first solve problem ini :D.

Baca D, oh dp bitmask, kodingan kertas sudah siap. Tapi kemalangan terjadi dan komputerku bener bener ngeblank -_-. Panitia nyoba benerin dengan cara di restart. Aku bisa aja ngerjain yg lain dikertas, tapi pikiranku rada panas jadi gabisa mikir.

Komputerku baru bener sekitar 30 menit kemudian. Segera kukoding D; ada bug dikit karena ngecek bit hidupnya if(mask ^ (1<<i)). Submit, AC. Udah ac 2, namun karena aku telat 30 menit, kayanya gabisa first solve lagi :(

Aku intip scoreboard, ada tim yang AC G, ternyata soal kombin. Aku nemu rumus kombinnya namun sempat terhenti karena n,k<=5000.
"Ini mau make modular inverse atau manual ya kayanya kalau modular inverse overkill"
Ternyata aku bisa kenceng ngoding modular inverse dan setelah beberapa menit sudah AC! Aku masih oneshot semua dan berada di peringkat atas scoreboard! Mantap juga karena kalau salah poin dikurangi 5.


Bingung ngerjain apa, semua keliatan susah >_<. Tiba-tiba tim Salman ketawa. Ternyata dia AC B, soal “membaca” yang kulupakan. Setelah aku analisis ternyata itu bisa complete search biasa karena huruf-hurufnya udah fix di grid 25x11. Kukoding, AC oneshot lagi. “Timku” diatasnya Salman lagi! Aku bener-bener ngerasa juara 1 itu mungkin, karena Salman penaltinya rada banyak. Eh, Salman ac F.

Baca E, langsung kepikiran idenya. Jawabannya hanya bergantung ada nb-1 elemen pertama karena elemen sisa bisa dibuat dengan elemen elemen tersebut. Aku ngoding dan dengan percaya diri submit *wah bakal oneshot nih*, tapi ternyata RTE!!! Aku cek, oh division by zero, fix, submit, WA!!!

Disini semua mulai downhill. Waktu masih 2 jam lagi, jadi aku coba debug solusiku. Setelah satu jam debug, bugnya tidak ketemu. Aku coba solve soal lain, F,  tapi tidak ketemu. Setengah jam terakhir, aku cari solusi E lagi.

Ada line yang aku kira ngebug, aku coba ganti, dan tetap WA!!! Ternyata, barisnya itu fine-fine aja dan aku telah membuang 5 poinku sia-sia. Waktu habis dan aku masuk ke penambahan waktu tadi. okelah move on dari E, kukerjain A, rumus dapat, parsing horrornya dapat. Tapi sayang, waktu habis.  Aku bilang kalau td ngehangnya 30 menit dan cuma dikasi waktu 15 menit. Tapi panitia bilang sudah nyatet :/

Aku tanya-tanya kabar tim lain. aSalman AC 5, aku 4, trus ada 1 yang 3, sisanya 2 kebawah. Perhitunganku, programming kan +100, logika bener 1 cuma dapat 5 poin. Berarti yg AC 3 harus bener 10+ soal logika lebih banyak dari aku. Kupikir sangat kecil peluangnya.

Kita foto-foto. Pas lomba, kalau AC sebuah soal panitia langsung nganter balon ke komputer. Karena aku AC 4, aku dapat 4 balon.

Foto sama MCnya dengan balon balonku

Ada overview. Ditampilkan semua nilai-nilai logika, terurut dari terbear ke terkecil. Ada yg dapat 160-an, ada yg dapet 28. Saat pengumuman, juara 1 Salman, juara 2 yg AC 3, juara 3 aku. Ternyata aku yang dapat nilai 28 :"(.

Dan tim yang juara 2,menurutku, dapat yang terbesar. Selisih poinnya beda 1 deh. Mau beda 1 poin atau 100 poin, kalah ya kalah. Aku sempet galau menatap hujan 30 menit baru mengambil hadiah 3 jt.

Balik sini langsung ke bandara, 1 mobil dengan tim kentang goreng. Aku makan malam di KFC dan ketemu kentang goreng lagi. Aku pingin ke toilet; posisi toilet terdekat ada di terminal lain jadi aku jogging.

Selesai urusan, kentang goreng baru mulai makan. Kita makan bareng deh, lalu misah. Aku jalan agak jauh, nyasar ke pintu kedatangan. Balik lagi lewat KFC, kentang goreng baru selesai makan jadi samaan juga masuknya.

Dibandara ini hadiahku ketinggalan 2x. Pertama waktu masuk keberangkatan hadiahku ketinggalan di KFC. Kedua saat waktu di boarding; udah di lapangan pesawat aku balik lagi ke ruangan. Untungnya masih ada :v

Pesan moral: awalnya aku kira sesi logikanya cuma sebagai tie breaker karena bobotnya 2:8. Jadi, aku fokusnya programming doang. Ternyata, aku kalah di logikanya dengan nilai paling kecil. Jadi ya ngaruh juga. OSP tinggal seminggu, mungkin ini jadi pengingat bahwa aku harus mulai serius belajar buat OSP.

Quotes
*waktu TM*
Si X: “kak, kalau nilai sama gimana?”
Panitia: “diliat tiketnya”
Si X: “kalau nilai sama, tiket sama?”
Panitia: “ya kalau sama-sama gk lolos, ya gak lolos! (ngakak, gk denger lanjutannya)”

*lagi main hangman sama Gio*
Panitia: “kamu duluan”
Gio: “A”
Panitia: “A gaada” (ngurangin 5 poin dari poin Gio)
Panitia: “kamu sekarang”
Galang: “A”
Panitia: “A gaada, kan tadi udah” (ngurangin 5 poin dari poin Galang)
Galang: “oh iya…”

*nunggu mulainya semifinal*
(ada orang duduk di sebelahku)
Si X: "mas tim apa?"
Galang: "Ngeramaikan saja"
(Si X pindah duduk)

*nungguin lawan di pos KenKen, tiba tiba ada tim lewat*
Galang : “ayo sini!!!” (melambai lambai)
Tim X: (kabur)
Galang: “MASA LAWAN 1 ORANG GK BISA??!”
*forever alone*

Sekian, rasanya ada beberapa peristiwa menarik yang lupa >_<. Tapi setidaknya inilah gambaran besar kegiatan di Yogya.

Comments

  1. Kuy sini dek, daftar ilkomp UGM :D

    ReplyDelete
  2. Yeay terimakasih sudah di review :)))))) iya saya lebih mirip sie transport daripada ketua panitia :''') wkwkwk ditunggu taun depan lang. semoga sukses OSP dan Emas OSN nya :D

    ReplyDelete
    Replies
    1. "Efek ketua pcs nya ganteng" (Krisna Attayendra - 2017)

      Delete

Post a Comment

Popular posts from this blog

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…

Mengikuti ICPC 2018

ah, ICPC. Singkatan dari International Collegiate Programming Contest. Perlombaan paling bergengsi untuk anak kuliahan. UI sendiri cukup aktif mengikuti perlombaan ini. Aku sebagai Maba dapat kesempatan untuk mengikuti lomba ini dan dapat keluar negeri juga. hehe. Berikut cerita ICPCku tahun ini. Selamat menikmati.

Pembentukan Tim


Di UI ada seleksi untuk pembentukan tim ICPC yang nantinya akan mewakili UI ke regional yang ke luar negeri. Seleksi ini dibuka untuk seluruh UI, kating-kating sampai maba boleh daftar, bahkan untuk non fasilkom pun boleh (Pak Denny bilang pernah ada anak FMIPA lolos :O).

Seleksi ini cukup singkat. Ada 3 kontes. 2 kontes pendek dan 1 kontes panjang.

Kontes pendek itu durasinya 2.5 jam dan ngerjain di lab. Dapet poin berdasarkan ranknya yaitu max(18-rank,2). Kontesnya di Vjudge.

Kontes panjang itu durasinya 1 minggu dan dapet poin cuma berdasarkan jumlah solve. kontesnya dari selasa - selasa depannya.

Ini aku ada kendala di laptop. Jadi laptopku saat itu (ROG…

Teknik Rekursi untuk Menjawab Soal di Kertas

Teknik rekursi buat OSP OSP kurang dari seminggu lagi dan dengan semakin seringnya muncul soal tipe ini,ingin  mencoba membahasnya. Kata orang kalau kita ngajarin orang lain jadi tambah ngerti maka jadilah post ini :v

(untuk alasan lupa dan kurangnya niat mencari soal asli, beberapa soal di post ini mungkin memiliki deskripsi berbeda dengan soal aslinya) pendahuluan

“banyaknya string biner dengan panjang 8 dimana tidak ada 2 angka 1 yang berdampingan adalah?”

saat membaca  soal ini, mungkin kita akan nyoba pake inklusi ekslusi yaitu banyaknya semua kemungkinan – banyaknya kemungkinan 2 angka 1 dempet + banyaknya kemungkinan 3 angka 1 dempet -… tp kasus banyak bakal mabok. Trus nyoba kuli aja, kelamaan. Jadi disini solusi yang tepat adalah menggunakan rekursi.

Misal F(n) banyaknya string yang memenuhi syarat tersebut dengan panjang n. Misal kita punya F(n) dan F(n-1), maka kita bisa mendapat F(n+1) sebagai berikut: Karena F(n) tidak mungkin memiliki 2 angka 1 yang berdampingan, maka didepan …