Hydra Logo

Peraturan Kompetisi

Peraturan Peserta

  1. Ngoding Seru adalah kompetisi individu.
  2. Peserta Ngoding Seru harus merupakan warga negara Republik Indonesia pada saat mendaftarkan dirinya.
  3. Karena salah satu tujuan Ngoding Seru adalah mencari/menghasilkan programmer kompetitif terbaik se-Indonesia, seluruh warga negara Republik Indonesia (terlepas dari jenjang pendidikan sekarang, lokasi domisili, dan sebagainya) kecuali Komite Ngoding Seru dapat mengikuti Ngoding Seru.
  4. Pendaftaran tidak dipungut biaya apapun.

Struktur Kontes

Ngoding Seru terdiri dari beberapa babak online dan satu babak onsite final, sebagai berikut:
  1. Uji Coba A: Babak ini akan berlangsung selama 23 jam. Peserta dapat menggunakan babak ini untuk membiasakan diri dengan sistem kompetisi. Babak ini dapat diikuti oleh seluruh peserta yang telah mendaftarkan dirinya untuk mengikuti Ngoding Seru paling lambat 24 jam sebelum babak berlangsung. Akun peserta untuk menggunakan sistem kompetisi akan dikirim melalui e-mail paling lambat 1 jam sebelum babak berlangsung.
  2. 1A: Babak ini akan berlangsung selama 1.5 jam. Peserta yang berada pada peringkat 50 besar dan meraih nilai lebih besar dari 0 akan lolos ke babak 2. Babak ini dapat diikuti oleh seluruh peserta yang telah mendaftarkan dirinya untuk mengikuti Ngoding Seru paling lambat 24 jam sebelum babak berlangsung. Jika peserta belum mendapat akun peserta untuk babak sebelumnya, akun peserta untuk menggunakan sistem kompetisi akan dikirim melalui e-mail paling lambat 1 jam sebelum babak berlangsung.
  3. Uji Coba B: Babak ini akan berlangsung selama 23 jam. Peserta dapat menggunakan babak ini untuk membiasakan diri dengan sistem kompetisi. Babak ini dapat diikuti oleh seluruh peserta yang telah mendaftarkan dirinya untuk mengikuti Ngoding Seru paling lambat 24 jam sebelum babak berlangsung. Jika peserta belum mendapat akun peserta untuk babak sebelumnya, akun peserta untuk menggunakan sistem kompetisi akan dikirim melalui e-mail paling lambat 1 jam sebelum babak berlangsung.
  4. 1B: Babak ini akan berlangsung selama 1.5 jam. Peserta yang berada pada peringkat 50 besar dan meraih nilai lebih besar dari 0 akan lolos ke babak 2. Babak ini dapat diikuti oleh seluruh peserta yang telah mendaftarkan dirinya untuk mengikuti Ngoding Seru paling lambat 24 jam sebelum babak berlangsung dan tidak lolos babak 1A. Jika peserta belum mendapat akun peserta untuk babak sebelumnya, akun peserta untuk menggunakan sistem kompetisi akan dikirim melalui e-mail paling lambat 1 jam sebelum babak berlangsung.
  5. 2: Babak ini akan berlangsung selama 2 jam. Peserta yang berada pada peringkat 20 besar dan meraih nilai lebih besar dari 0 akan lolos ke babak final. Babak ini dapat diikuti oleh seluruh peserta yang lolos babak 1A atau 1B.
  6. Final: Babak ini akan berlangsung selama 4 jam. Babak ini dapat diikuti oleh seluruh peserta yang lolos babak 2. Jika salah satu peserta pada 20 besar babak 2 menolak undangan untuk mengikuti babak final, maka peserta pada peringkat 21 akan diundang untuk mengikuti babak final, demikian seterusnya. Namun, peserta yang mendapatkan nilai tidak lebih besar dari 0 pada babak 2 tidak akan diundang.
Rangkuman struktur kontes dapat dilihat pada diagram berikut (angka pada garis menunjukan banyaknya peserta yang lolos):

Peraturan Babak

  1. Editor dan bahasa pemrograman
    1. Peserta dapat menggunakan editor apa saja, baik offline maupun online, selama kode peserta tidak dapat diakses oleh peserta lain.
    2. Peserta harus mengumpulkan solusi peserta dalam bentuk kode program ke sistem Ngoding Seru. Kode program ini tidak boleh berukuran lebih dari 300kB.
    3. Kode yang dikumpulkan ke sistem Ngoding Seru harus merupakan salah satu bahasa berikut: C, C++11, Pascal, Python 3, dan Java 8.
  2. Penilaian
    1. Setiap babak memiliki beberapa soal. Setiap soal memiliki satu atau lebih subsoal.
    2. Setiap subsoal memiliki nilai. Nilai ini adalah nilai yang didapatkan peserta jika peserta berhasil menyelesaikan subsoal tersebut.
    3. Pengumpulan peserta untuk sebuah subsoal akan mendapatkan umpan balik langsung yang merupakan salah satu dari kemungkinan berikut:
      • CE (COMPILE-ERROR): Kode pengumpulan peserta tidak dapat dikompilasi.
      • RTE (RUNTIME-ERROR): Kode pengumpulan peserta dapat dikompilasi, namun crash saat dieksekusi pada kasus uji yang dimiliki juri.
      • TLE (TIME-LIMIT-EXCEEDED): Kode pengumpulan peserta dapat dikompilasi, namun membutuhkan waktu melebihi batas pada kasus uji yang dimiliki juri.
      • WA (WRONG-ANSWER): Kode pengumpulan peserta dapat dikompilasi, namun menghasilkan keluaran yang salah pada kasus uji yang dimiliki juri.
      • AC (ACCEPTED): Kode pengumpulan peserta dapat dikompilasi dan menghasilkan keluaran yang benar untuk seluruh kasus uji dalam batasan waktu dan memori yang diberikan.
    4. Pengumpulan peserta dinyatakan benar jika kode yang dikumpulkan peserta untuk subsoal tersebut mendapatkan umpan balik ACCEPTED. Jika tidak, maka pengumpulan peserta tersebut dinyatakan salah.
    5. Peserta dinyatakan menyelesaikan sebuah subsoal jika setidaknya satu pengumpulan peserta untuk subsoal tersebut dinyatakan benar.
    6. Nilai peserta adalah jumlah nilai subsoal yang berhasil diselesaikan oleh peserta tersebut.
    7. Pinalti peserta adalah banyaknya pengumpulan peserta yang dinyatakan salah pada subsoal yang akhirnya diselesaikan oleh peserta tersebut. Perhatikan bahwa pengumpulan peserta yang dinyatakan salah pada subsoal setelah subsoal tersebut diselesaikan juga dihitung dalam pinalti.
    8. Waktu peserta adalah waktu yang dibutuhkan peserta untuk mendapatkan nilai peserta tersebut (dalam satuan menit, dibulatkan ke atas), ditambah dengan pinalti dikali 1/30 × durasi babak. Khusus untuk babak uji coba, waktu peserta adalah waktu yang dibutuhkan peserta untuk mendapatkan nilai peserta tersebut (dalam satuan menit, dibulatkan ke atas), ditambah dengan pinalti dikali 2 menit.
    9. Peserta yang memiliki nilai yang lebih banyak akan mendapatkan peringkat yang lebih baik. Jika dua peserta memiliki nilai yang sama, peserta yang memiliki waktu lebih sedikit akan mendapatkan peringkat yang lebih baik. Jika dua peserta memiliki nilai dan waktu yang sama, maka kedua peserta tersebut akan mendapatkan peringkat yang sama.
  3. Penggunaan kode dan internet pada babak online
    1. Kode solusi yang peserta kumpulkan harus sepenuhnya ditulis oleh peserta itu sendiri, kecuali jika kode tersebut telah ditulis dan disebarkan sebelum awal babak.
    2. Peserta bebas mengakses internet dan menggunakan seluruh informasi yang terdapat di internet, namun tidak boleh berdiskusi dengan orang lain (termasuk peserta lain) mengenai konten babak yang sedang berlangsung.
    3. Pelanggaran pada peraturan ini dapat menyebabkan diskualifikasi peserta dari Ngoding Seru.

Spesifikasi Teknis

Berikut adalah spesifikasi komputer yang digunakan untuk menilai pengumpulan peserta:

Hardware dan Sistem Operasi

  • 2 GB RAM
  • Intel(R) Xeon(R) Gold 6140 CPU @ 2.30GHz
  • Ubuntu 14.04 5 x64

Compiler/Interpreter

  • C: gcc version 4.8.4
  • C++11: gcc version 4.8.4
  • Pascal: Free Pascal Compiler version 2.6.2-8
  • Python 3: Python 3.4.3
  • Java 8: java version "1.8.0_201"

Perintah kompilasi

  • C: /usr/bin/gcc -std=gnu99 -o ${EXECUTABLE} ${SOURCE} -O2 -lm
  • C++11: /usr/bin/g++ -std=c++11 -o ${EXECUTABLE} ${SOURCE} -O2 -lm
  • Pascal: /usr/bin/fpc ${SOURCE} -O2 -XS -Sg
  • Java 8: /usr/bin/javac ${SOURCE}