Peraturan

Soal dan Jawaban Peserta

  1. Peserta akan diberikan soal-soal pemrograman (competitive programming) dalam Bahasa Inggris dan Bahasa Indonesia.
  2. Setiap soal yang diberikan terdiri dari:
    • Kepala Soal – judul soal, batasan waktu, dan batasan memori.
    • Deskripsi Permasalahan – latar belakang dan paparan permasalahan.
    • Spesifikasi Input – spesifikasi format dan batasan input.
    • Spesifikasi Output – spesifikasi format output.
    • Contoh Input/Output – contoh input beserta output yang harus dihasilkan.
  3. Program peserta harus membaca input dari stAndard input (stdin, default: keyboard) dan menulis output ke stAndard output (stdout, default: layar monitor).
  4. Peserta bisa mengumpulkan (submit) solusi selama kontes berlangsung melalui sistem kontes yang disediakan, yaitu DOMJudge. Jawaban yang disubmit adalah source code dari program yang dibuat (.c/.cpp/.py/.java). Bahasa pemrograman yang disediakan adalah:
    • C,
    • C++17,
    • Python 2,
    • Python 3, dan
    • Java
    Sistem sudah diinstalasi dengan compiler sebagai berikut:
    • C/C++17: GCC/G++ 9.3.0,
    • Java: Java 11.0.9, dan
    • Python: Python 2.7.18 and Python 3.8.5.
  5. Semua solusi yang digunakan oleh tim juri adalah dalam C++17, dan mampu menyelesaikan semua soal yang ada. Perlu diperhatikan bahwa solusi dalam Python bisa saja lebih lambat dibandingkan dengan bahasa yang lain, sehingga dimungkinkan solusi dalam Python tidak memenuhi batas waktu yang diberikan meskipun menggunakan algoritma yang sama.
  6. Program yang dikumpulkan peserta akan diuji kebenarannya dengan kasus uji (testcase) rahasia yang sudah dipersiapkan oleh juri sebelumnya. Kasus uji yang digunakan oleh juri dijamin sesuai dengan batasan input yang tertera pada soal.
  7. Setiap program yang disubmit akan mendapatkan salah satu dari respon berikut:
    • ACCEPTED – program Anda berjalan dalam batasan waktu dan memori tanpa adanya error, serta berhasil menyelesaikan semua kasus uji dengan benar sesuai dengan soal.
    • WRONG ANSWER – program Anda berjalan sesuai dengan batasan waktu dan memori yang ditentukan, namun menghasilkan jawaban yang salah pada salah satu kasus uji.
    • RUNTIME ERROR – program Anda mengalami crash (runtime-error) ketika dijalankan dengan kasus uji.
    • TIMELIMIT – program Anda berjalan melebihi batas waktu yang ditentukan (program dihentikan secara paksa).
    • MEMORY-LIMIT – program Anda berjalan melibihi batas memori yang ditentukan (program dihentikan secara paksa).
    • NO-OUTPUT – program Anda tidak menghasilkan keluaran.
    • COMPILE-ERROR – program Anda tidak bisa dikompilasi.
  8. Peserta dapat menanyakan klarifikasi tertulis mengenai hal-hal (terkait soal, sistem kompetisi, dan sebagainya) yang dianggap kurang jelas melalui sistem yang disediakan. Setiap klarifikasi hanya berisi sebuah pertanyaan dalam format yes-no question. Tim juri akan menjawab klarifikasi dengan salah satu dari jawaban berikut:
    • Ya;
    • Tidak;
    • Baca soal lebih teliti;
    • Pertanyaan tidak jelas;
    • Tidak ada komentar;
    • Jawaban lain bila diperlukan;
  9. Program yang disubmit tidak boleh:
    • mengakses jaringan,
    • melakukan forking,
    • membuat atau membuka file,
    • mengganti hak akses file,
    • membaca informasi file,
    • memanggil system call,
    • mengeksekusi program lain, dan
    • menyerang sistem keamanan grader.
  10. Peserta yang melanggar peraturan yang tertera pada poin 9 akan didiskualifikasi dari lomba. Keputusan dari juri bersifat mutlak dan tidak dapat diganggu gugat.

Sistem Penilaian

Sistem penilaian yang digunakan oleh BNPCHS 2021 mengikuti stAndard dari ACM-ICPC, yaitu:
  1. Peringkat peserta ditentukan berdasarkan:
    1. Jumlah soal yang berhasil diselesaikan (ACCEPTED) terbanyak.
    2. jika (i) sama, maka: penalti waktu terkecil.
    3. jika (i) dan (ii) sama, maka: waktu submission terakhir untuk program yang ACCEPTED tercepat.
  2. Penalti waktu adalah waktu submission untuk program yang ACCEPTED (dalam menit, dari kontes dimulai) ditambah dengan penalti 20 menit untuk setiap jawaban yang tidak mendapatkan ACCEPTED untuk soal tersebut, terkecuali untuk respon COMPILER-ERROR tidak mendapatkan penalti.
  3. Setiap peserta hanya bisa mendapatkan 1 jawaban yang ACCEPTED untuk setiap soal; jawaban yang dikumpulkan untuk soal tersebut setelah soal tersebut mendapatkan ACCEPTED tidak akan diperhitungkan (benar maupun salah).
  4. Peserta bebas memilih untuk mengerjakan soal manapun, dengan urutan apapun.

Babak Penyisihan

  1. Babak penyisihan akan berlangsung secara online melalui alamat web yang akan diumumkan kemudian. Pastikan Anda sudah mendapatkan akun untuk login ke sistem yang digunakan sebelum sesi pemanasan dari babak penyisihan. Jika Anda belum mendapatkan akun, hubungi contact person.
  2. Peserta akan diberikan 5 hingga 6 soal pemrograman dengan durasi perlombaan selama 180 menit.
  3. Tersedia scoreboard yang bersifat publik dan dapat diakses oleh peserta.
  4. Peserta diperbolehkan untuk mencari referensi, baik dari buku fisik, buku elektronik, maupun internet. Dimohon untuk tidak mengumpulkan program secara mentah dari referensi yang Anda rujuk, karena merupakan bentuk plagiarisme.
  5. Selama kontes berlangsung, peserta tidak diijinkan untuk:
    • Berkomunikasi dengan semua orang (selain dengan tim juri hanya melalui sistem klarifikasi) dalam bentuk apapun dengan media komunikasi apapun;
    • Melakukan plagiarisme, baik terhadap program peserta lain maupun program yang Anda rujuk, seperti yang tertera pada poin 4;
  6. Peserta yang terindikasi melanggar peraturan yang tertera pada poin 5 akan didiskualifikasi dari lomba. Keputusan juri bersifat mutlak dan tidak dapat diganggu gugat.
  7. Peserta yang berhak mengikuti babak final adalah 40 peserta terbaik, dan 10 peserta terbaik dari SMA berbeda yang belum termasuk dalam 40 peserta terbaik.

Babak Final

  1. Babak final akan berlangsung secara online melalui alamat web yang sama dengan babak penyisihan. Akun yang Anda gunakan adalah akun yang sama dengan babak penyisihan.
  2. Peserta akan diberikan 8 hingga 12 soal pemrograman dengan durasi perlombaan selama 300 menit.
  3. Terdapat sistem proctoring melalui zoom yang wajib diikuti oleh peserta. Peraturan detil mengenai sistem proctoring akan dijelaskan secara terpisah dan menyusul.
  4. Tersedia scoreboard yang bersifat publik dan dapat diakses oleh peserta.
  5. Scoreboard tidak akan diupdate (frozen) mulai dari menit ke-241 (60 menit menjelang akhir kontes). Peserta tetap dapat mengirimkan jawaban, dan respon dari grader tetap akan diberikan, namun hasilnya tidak akan ditampilkan di scoreboard.
  6. Peserta diperbolehkan untuk mencari referensi, baik dari buku fisik, buku elektronik, maupun internet. Dimohon untuk tidak mengumpulkan program secara mentah dari referensi yang Anda rujuk, karena merupakan bentuk plagiarisme.
  7. Selama kontes berlangsung, peserta tidak diijinkan untuk:
    • Berkomunikasi dengan semua orang (selain dengan tim juri hanya melalui sistem klarifikasi) dalam bentuk apapun dengan media komunikasi apapun;
    • Melakukan plagiarisme, baik terhadap program peserta lain maupun program yang Anda rujuk, seperti yang tertera pada poin 6;
  8. Peserta yang terindikasi melanggar peraturan yang tertera pada poin 7 akan didiskualifikasi dari lomba. Keputusan juri bersifat mutlak dan tidak dapat diganggu gugat.
  9. Banyaknya pemenang dan medali, beserta dengan hadiah untuk para pemenang akan dijelaskan secara terpisah dan menyusul.