VERSI BAHASA INDONESIA
Deskripsi Competitive Programming Contest CompFest7 merupakan kompetisi pemrograman berskala nasional yang diselenggarakan oleh Fakultas Ilmu Komputer Universitas Indonesia. Competitive Programming Contest CompFest7 terbagi dalam dua kategori: Junior Competitive Programming Contest (JCPC) dan Senior Competitive Programming Contest (SCPC). JCPC diperuntukkan bagi siswa pra perguruan tinggi (SD, SMP, SMA, atau sederajat), sedangkan SCPC diperuntukkan bagi mahasiswa (Diploma, S1, atau S2). Competitive Programming Contest menguji kemampuan berpikir logis dan sistematis peserta dalam menyelesaikan persoalan-persoalan komputasional menggunakan bahasa pemrograman Pascal atau C/C++, dalam batasan-batasan tertentu seperti batasan waktu dan memori. Salah satu rangkaian acara dalam Competitive Programming Contest, Coder Class, akan diadakan satu bulan sebelum kompetisi untuk melatih kemampuan competitive programming peserta dan untuk membiasakan peserta dengan sistem grader yang digunakan.
Penghargaan
Juara I Juara II Juara III
Syarat dan Ketentuan Berikut adalah syarat dan ketentuan peserta Junior Competitive Programming Contest.
Peserta Junior Competitive Programming Contest adalah perorangan.
Peserta merupakan siswa pra perguruan tinggi (SD, SMP, SMA, atau sederajat) yang belum dinyatakan lulus SMA (atau sederajat) pada bulan September 2015.
Peserta diwajibkan mengunggah surat keterangan bahwa siswa tersebut merupakan siswa aktif dari sekolah yang bersangkutan.
Peserta memenuhi prosedur pendaftaran yang telah ditetapkan di bawah (termasuk pelunasan biaya pendaftaran sebesar Rp50.000,00 per orang).
Prosedur Pendaftaran 1. Buat akun pada situs web CompFest7: http://www.compfest.web.id/login, kemudian log in (jika belum). 2. Daftar JCPC menggunakan tombol “Sign Up for JCPC” pada halaman CPC CompFest7 (http://compfest.web.id/competition/competitive-programming-contest), kemudian lakukan hal-hal berikut.
Masukkan informasi nama, nomor telepon yang dapat dihubungi, alamat email, nama pendamping, dan nomor telepon pendamping pada kolom yang disediakan.
Klik tombol “Go to Dashboard”, kemudian pilih menu Competition.
Klik tombol “Add member”, kemudian masukkan informasi diri Anda dan unggah berkas-berkas yang diperlukan. (Untuk kolom role, pilih opsi Leader.)
3. Lakukan pembayaran sesuai dengan prosedur berikut. 1). Buka email dari panitia Competitive Programming Contest CompFest7 yang terdapat di dalam kotak masuk email Anda (email akan dikirimkan paling lambat tiga hari setelah pendaftaran tim dilakukan. Jika Anda belum menerima email dari panitia dalam tiga hari, silakan menghubungi narahubung yang tercantum pada akhir berkas). 2). Transfer biaya pendaftaran (Rp50.000,00 per peserta) ke nomor rekening yang diberikan dalam email verifikasi pada langkah 1. 3). Unggah bukti pembayaran pada dashboard situs web CompFest7 sebelum masa pendaftaran berakhir.
4. Tunggu verifikasi oleh panitia. Peserta yang telah diverifikasi resmi menjadi peserta
Junior Competitive Programming Contest CompFest7. Email mengenai verifikasi akan dikirimkan kepada peserta melalui alamat email yang digunakan saat pendaftaran.
Jadwal dan Alur Kompetisi CompFest Coder Class
Sesi latihan yang tidak wajib, dilaksanakan secara online dari tanggal 3 Agustus 2015 sampai dengan 23 Agustus 2015
Penyisihan
Penyisihan akan dilaksanakan secara online pada tanggal 29 Agustus 2015
Pengumuman Finalis
Pengumuman finalis akan diumumkan pada tanggal 3 September 2015
Final
Babak final akan dilaksanakan onsite pada acara puncak CompFest7 pada tanggal 27 September 2015
Pengumuman Pemenang
Pemenang kompetisi akan diumumkan tanggal 4 Oktober 2015 pada acara puncak CompFest7.
CompFest Coder Class
CompFest Coder Class merupakan sesi pelatihan yang bersifat opsional untuk melatih kemampuan competitive programming peserta dan memperkenalkan sistem grader yang akan digunakan selama kompetisi. Alamat situs Coder Class dan informasi akun untuk login ke sistem Coder Class akan diberikan hanya kepada peserta yang telah diverifikasi dan telah memenuhi prosedur pendaftaran.
CompFest Coder Class diadakan selama tiga minggu. Soal-soal latihan akan diberikan setiap minggunya. Solusi soal-soal tersebut akan dipublikasikan pada akhir pekan setiap minggunya.
Tingkat kesulitan soal pada CompFest Coder Class tidak mencerminkan tingkat kesulitan soal yang akan diujikan pada babak penyisihan dan babak final.
Babak Penyisihan
Babak penyisihan akan dilaksanakan secara online pada alamat web yang diumumkan kemudian.
Babak penyisihan akan dilaksanakan selama 3 (tiga) jam dan terdiri dari 3 (tiga) sampai 5 (lima) soal pemrograman.
Tim dapat mengajukan klarifikasi soal melalui sistem grader pada 2 (dua) jam pertama kompetisi.
Dua puluh lima peserta terbaik dengan nilai akhir di atas nol berhak mengikuti babak final (lihat bagian Sistem Penilaian).
Selama kompetisi berlangsung, setiap peserta dilarang untuk bekerja sama dalam bentuk apapun dengan peserta lain.
Peserta
yang
terindikasi
melakukan
pelanggaran
atau
kecurangan
akan
didiskualifikasi.
Babak Final
Babak final dilaksanakan secara onsite di Fakultas Ilmu Komputer Universitas Indonesia, Depok, Jawa Barat.
Setiap tim akan disediakan 1 (satu) unit komputer dengan spesifikasi sebagai berikut. Sistem Operasi
Ubuntu (di atas versi 10.10)
Web Browser
Firefox
Editor
geany, gedit, vi
Compiler
Pascal
(Free Pascal Compiler (fpc),
versi ≥ 2.4.x)
C
(GNU C Compiler (gcc),
versi ≥ 4.7.x)
C++
(GNU C Compiler++ (g++),
Debugger
GNU Debugger (gdb)
Dokumentasi
C++ STL Reference
Aplikasi Lain
Kalkulator (GNOME calculator)
versi ≥ 4.7.x)
LibreOffice (Writer, Calc, Impress) Python Interactive Shell
Babak final akan dilaksanakan selama 5 (lima) jam dan terdiri dari 8 (delapan) sampai 12 (dua belas) soal pemrograman.
Peserta dapat mengajukan klarifikasi soal melalui sistem grader pada 4 (empat) jam pertama kompetisi.
Scoreboard akan dibekukan pada 1 (satu) jam terakhir kompetisi.
Selama kompetisi berlangsung, peserta dilarang: ○ Berkomunikasi dengan peserta tim lain. ○ Mengganggu peserta tim lain. ○ Makan atau minum di dalam ruangan kompetisi. ○ Mengganggu jalannya kompetisi dalam bentuk apa pun. ○ Melakukan
hal-hal
yang
berpotensi
merusak
perangkat
komputer
(membanting mouse, memukul keyboard keras-keras, dan lain lain). ○
Menggunakan catatan dalam bentuk apa pun, media penyimpanan eksternal dalam bentuk apa pun (flash disk, dsb.), alat komunikasi dalam bentuk apa pun (ponsel, dsb.), dan/atau alat bantu hitung seperti sempoa dan kalkulator (dalam bentuk fisik).
Peserta yang terindikasi melakukan pelanggaran atau kecurangan akan diskualifikasi.
Teknis Kompetisi Bahasa Pemrograman Bahasa pemrograman yang diperbolehkan dalam Junior Competitive Programming Contest CompFest7 adalah:
Pascal, dengan ekstensi berkas .pas;
C,
dengan ekstensi berkas .c;
C++,
dengan ekstensi berkas .cpp.
Perintah kompilasi untuk masing-masing bahasa adalah:
Pascal: fpc -O2 -XS -Sg [source.pas]
C:
gcc -o [source] [source.c] -std=gnu99 -O2 -s -static -lm;
C++:
g++ -o [source] [source.cpp] -O2 -s -static -lm -std=c++11.
Soal Soal-soal yang diberikan merupakan soal-soal algoritmis. Setiap soal memiliki komponenkomponen berikut.
Kepala Soal; berisi judul soal, batas memori, dan batas waktu eksekusi program.
Deskripsi; berisi pengantar dari permasalahan dalam suatu soal.
Format Masukan; menyatakan spesifikasi masukan dari soal.
Format Keluaran; menyatakan spesifikasi keluaran dari soal.
Contoh Masukan dan Keluaran; berisi satu atau lebih contoh masukan dan keluaran yang bersesuaian.
Batasan; menyatakan batasan-batasan pada soal. Batasan-batasan khusus dari setiap subsoal akan dituliskan dalam komponen ini.
Sistem Penilaian
Setiap jawaban dikirimkan dalam bentuk berkas yang isinya merupakan kode yang ditulis menggunakan salah satu bahasa pemrograman yang diperbolehkan.
Berkas kode yang dikirim berukuran maksimal 100KB dan harus dapat dikompilasi dalam waktu maksimal 30 detik.
Program peserta menerima masukan dari standard input (keyboard) dan memberikan keluaran melalui standard output (layar).
Program peserta harus berhenti (terminate) dalam batas waktu tertentu dan tidak diperkenankan menggunakan memori lebih besar dari batasan yang telah ditentukan (batas waktu dan batas memori dicantumkan secara eksplisit pada setiap soal).
Masing-masing soal diberi bobot nilai 100 poin.
Setiap soal dibagi menjadi 3 (tiga) atau lebih subsoal yang masing-masing memiliki bobot tersendiri. Untuk mendapatkan nilai di suatu subsoal, program harus menghasilkan keluaran yang sesuai untuk setiap kasus uji pada subsoal tersebut. Banyaknya kasus uji pada setiap subsoal tidak dapat diketahui oleh publik, termasuk peserta. Total bobot dari seluruh subsoal akan berjumlah 100 poin.
Setiap program peserta akan mendapatkan satu dari putusan-putusan berikut. o
“Accepted”, program menghasilkan jawaban yang benar untuk setiap kasus uji dan selesai dalam batas waktu dan memori yang diberikan. Peserta mendapat nilai 100 poin.
o “Compile Error”, program tidak dapat dikompilasi di server. o “Wrong Answer”, program berjalan dan selesai dalam batasan waktu dan memori yang diberikan, namun menghasilkan jawaban yang salah. o “Time Limit Exceeded”, program berjalan namun tidak selesai dalam batasan waktu yang diberikan.
o “Memory Limit Exceeded”, program menggunakan memori lebih dari batasan yang diberikan. o “Runtime Error”, program selesai namun mengembalikan non-zero return code.
Peserta akan langsung dapat melihat putusan-putusan beserta nilai yang diperoleh dari setiap program yang dikirim. Putusan-putusan yang dapat dilihat oleh peserta adalah putusan-putusan terkait suatu subsoal, namun tidak detail hingga ke kasus uji.
Nilai dari suatu soal adalah nilai maksimum dari seluruh solusi yang dikumpulkan.
Nilai akhir dari seorang peserta adalah total nilai dari seluruh soal.
Peserta akan diurutkan berdasarkan nilai akhir, kemudian berdasarkan berdasarkan waktu pengumpulan jawaban terakhir yang paling awal yang mempengaruhi nilai akhir peserta.
Program peserta dilarang untuk: o mengakses jaringan; o forking; o membuka dan membuat file; o menyerang sistem keamanan server grader; o mengeksekusi program lain; o mengganti hak akses file; o membaca informasi file; o membuat system call.
Peserta yang melanggar larangan tersebut dengan sengaja akan didiskualifikasi.
Keputusan juri bersifat mutlak dan tidak dapat diganggu gugat.
Klarifikasi Peserta dapat meminta klarifikasi tertulis mengenai hal-hal (terkait soal, sistem kompetisi, dsb.) yang dianggap kurang jelas. Permintaan klarifikasi dapat diajukan pada 2 (dua) jam pertama pada babak penyisihan atau pada 4 (empat) jam pertama babak final. Pertanyaan yang diajukan di luar masa permintaan klarifikasi tidak akan dijawab kecuali jika dianggap perlu oleh pihak juri. Juri akan menjawab pertanyaan klarifikasi dengan salah satu dari jawaban di bawah ini.
“Yes” – Ya
“No” – Tidak
“Answered in task (explicitly or implicitly)” – Baca soal lebih teliti (Deskripsi soal sudah cukup jelas. Peserta perlu membaca kembali soal dengan lebih teliti).
“Invalid Question” – Pertanyaan tidak sah (Pertanyaan tidak dapat dijawab dengan “ya” atau “tidak”. Peserta diharapkan mengubah pertanyaannya sehingga jawaban “ya” atau “tidak” menjadi bermakna).
“No comment” – Tidak ada komentar (Peserta menanyakan informasi yang tidak dapat diberitahukan juri).
Jawaban lain bila diperlukan.
Narahubung [T]: +62 87783277820 (Soko) [T]: +62 87835520315 (Gentur) [E]:
[email protected]
ENGLISH VERSION
Description CompFest7 Competitive Programming Contest is a nationwide competition held by The Faculty of Computer Science, University of Indonesia. The competition is divided into two categories: Junior Competitive Programming Contest (JCPC), which is intended for pre-college students (primary and secondary school students), and Senior Competitive Programming Contest (SCPC), which is intended for college/university students (diploma, undergraduate, or graduate level). In Competitive Programming Contest, the ability to think logically and systematically in solving algorithmic, programming-based problems using Pascal and/or C/C++ under certain constraints (time and memory) will be tested. To introduce the grading environment and to
warm-up the participants in competitive programming skills, CompFest Coder Class will be commenced approximately one month before the actual competition.
Awards ● First Place ● Second Place ● Third Place
Terms and Conditions The following terms and conditions apply to Junior Competitive Programming Contest participants.
Participant of Junior Competitive Programming Contest is an individual.
Participant is pre-college/university student who will not have graduated by September 2015.
Participant must submit letter confirming that the participant is an active student in his/her current school.
Participants must fulfill the registration procedure listed below (including the payment of registration fee of Rp50,000.00 per participant).
Registration Procedure 1. Make an account at the CompFest7 website: http://www.compfest.web.id/login, then log in (if the system has not done it for you). 2. Apply for JCPC registration using the “Sign Up for JCPC” button provided on the CompFest7 Competitive Programming Contest page (http://compfest.web.id/ competition/competitive-programming-contest), then do the following things. Enter your name contactable phone number, email address, coach name, and coach phone number in the provided fields. Click the “Go to Dashboard” button, then go to the Competition menu. Click on the “Add Member” button, then enter your informations and upload the required documents. (For the role input field, select Leader.) 3. Transfer the registration fee by following these procedures. 1) Check your mailbox for an email sent by CompFest7 committee (email will be sent within 3 days after registration. If you have not received the email after 3 days, plase contact the contact persons listed at the end of this document). 2) Transfer the registration fee of Rp50.000,00 to be bank account number provided in the email given in step 1. 3) Upload the payment receipt through CompFest7 web dashboard before the registration closes. 4. Wait for our confirmation. Participants that have been confirmed will officially be the participants of CompFest7 Junior Competitive Programming Contest. A confirmation email regarding this information will we mailed to your email address.
Event Schedule CompFest Coder Class
Optional practice session; held online from 3rd of August 2015 until 23rd of August 2015.
Preliminary Round
The preliminary round will be held online on 29th of August 2015.
Finalists Announcement
The finalists will be announced on 3rd of September 2015.
Final Round
The final round will be held on 27th of September 2015.
Winners Announcement
Winners of the contest will be announced during CompFest7 main event on 4th October 2015.
CompFest Coder Class
CompFest Coder Class is an optional practice session designed to train competitive programming skills of the participants and to introduce the grading environment that will be used during the competition. Access to Coder Class website will only be given to confirmed participants that have been verified and fulfilled the registration procedure.
CompFest Coder Class will be held for 3 weeks. Practice problems will be given during each week. The solution for the problems will be revealed at the end of each week.
The difficulty of the problems given in Coder Class may not reflect the difficulty of preliminary and final round problems.
Preliminary Round
The preliminary round will be held online using a website which address is to be announced.
Participants will be presented with 3 to 5 programming problems to be solved in 3 hours.
Participants may ask for clarification during the first 2 hours of the competition.
Top 25 participants with non-zero (positive) score will be invited to participate in the final round.
During the competition, each participant must not work with any other participant(s) in any way.
Any participant deemed to have done misconduct will be disqualified.
Final Round
The final round will be held onsite at the Faculty of Computer Science, University of Indonesia, Depok, West Java.
Each team will be provided with one computer with the following specification. Operating System
Ubuntu (10.10 or newer)
Web Browser
Firefox
Editor
geany, gedit, vi
Compiler
Pascal
(Free Pascal Compiler (fpc),
2.4.x or newer)
C
(GNU C Compiler (gcc),
4.7.x or newer)
C++
(GNU C Compiler++ (g++),
4.7.x or newer)
Debugger
GNU Debugger (gdb)
Documentation
C++ STL Reference
Other Application
Calculator (GNOME calculator) LibreOffice (Writer, Calc, Impress) Python Interactive Shell
Participants will be presented with 5 to 10 programming problems to be solved in 5 hours.
Participants may only ask for clarification during the first 4 hours of the competition.
The scoreboard will be frozen during the last 1 hour of the competition.
During the competition, participants are prohibited to: ○ Communicate with the other participant(s); ○ Disturb the other participant(s); ○ Eat and/or drink in the competition room; ○ Disrupt the the course of the competition; ○ Do potentially destructive behavior(s), e.g. throwing the mouse, smashing on the keyboard; ○ Use any kind(s) of communication device; ○ Use any kind(s) of data storage medium (e.g. flash drive); ○ Use any kind(s) of physical calculating tools (e.g. abacus, physical calculator).
Any participant deemed to have done misconduct will be disqualified.
Technical Details Programming Languages The programming languages allowed in CompFest7 Junior Competitive Programming Contest are
Pascal (using .pas file extension);
C
(using .c file extension);
C++
(using .cpp file extension).
The command used for compiling each submission is the following.
Pascal : fpc -O2 -XS -Sg [source.pas];
C
: gcc -o [source] [source.c] -std=gnu99 -O2 -s -static -lm;
C++
: g++ -o [source] [source.cpp] -O2 -s -static -lm -std=c++11.
Problems The problems that will be given are algorithmic problems. Each question has the following components.
Problem header, containing the problem title, execution time limit, and memory limit.
Description, containing the description of the task(s) to be done.
Input format, containing the specification of program input.
Output format, containing the specification of program output.
Sample input(s) and output(s), containing one or more pairs of sample input and its output.
Constraints, specifying the constraints for the particular problem. Specific constraints of a subtask will also be written here.
Grading
The answers (programs) are to be sent in the form of source code, using any of the allowed programming languages.
The source code must not be bigger than 100KB and must be compilable within 30 seconds.
The submitted programs are expected to receive inputs from the standard input (i.e. keyboard) and write its outputs to the standard output (i.e. the screen).
The submitted program must terminate within the given time limit and must not use memory larger than the specified memory limit (dependent to the problem).
Every problem has maximum score of 100 points.
Every problem is divided into 3 (three) or more subtasks which have their own points. To score points from a specific subtask, the submitted program must produce the correct output for each testcase contained in the subtask. The number of testcase contained in a subtask will not be announced to the public, even to the participant. Sum of points over all subtasks in a problem is 100.
Every submitted program will be given one of these verdicts: o “Accepted”, the program produced correct output for each test case within the time and memory limit. o “Compile Error”, the program failed to be compiled. o “Wrong Answer”, the program terminated successfully within the time and memory limit, but didn’t produce the correct output. o “Time Limit Exceeded”, the program didn’t terminate within the time limit. o “Memory Limit Exceeded”, the program tried to use more memory than the limit. o “Runtime Error”, the program terminated with a non-zero return code.
Participants will be able to see full feedback (verdicts and score) of a submission right after the judging finished. The feedback that will be given will be specified over all subtasks (e.g., Subtask 1: Accepted; Subtask 2: Wrong Answer; Subtask 3: Time Limit Exceeded; and so on).
The score of a problem is the maximum score over all submissions to the problem.
The final score of a participant is the sum over score from all problems.
Participants are ranked by the final score, then by the earliest submission time of the last run which affects the final score.
Submitted programs are not allowed to: o access the network; o fork; o open and/or create files; o attack the system or the grader; o execute other programs; o mengakses jaringan; o change file permissions; o read file information; o make system call.
Deliberate violation of the rules above may result in disqualification.
The decisions of the judges are final and binding.
Clarification Participants may ask for written clarifications concerning any ambiguities or things related to the competition (problems, competition system, etc.). Requests for clarification can only be made during the allocated time span (the first 2 hours for preliminary round; the first 4 hours for the final round). Any clarification requests sent after this period will not be answered unless deemed necessary by the judges. The answer for each clarification request will be one of the following.
“Yes”
“No”
“Answered in task (explicitly or implicitly)” (The task description contains sufficient information. The contestant should read it again carefully).
“Invalid Question” (The question is most likely not phrased so that a yes/no answer would be meaningful. The contestant may need to rephrase the question).
“No comment” (The contestant is asking for information that the judges cannot give).
Any other answer, if needed.
Contact Person [T]: +62 87783277820 (Soko) [T]: +62 87835520315 (Gentur) [E]:
[email protected]