Jabarkan Gambaran umum dari Pemrograman kompetitif

Tujuan dari pemrograman kompetitif adalah menulis kode sumber dari program komputer yang dapat menyelesaikan masalah-masalah yang diberikan. Sebagian besar masalah yang diberikan pada kompetisi pemrograman bertemakan matematika dan logika. Masalah-masalah tersebut termasuk salah satu dari kategori berikut: kombinatorik, teori bilangan, teori graf, teori permainan algoritme, geometri komputasi, analisis string, dan struktur data. Masalah-masalah terkait constraint programming dan kecerdasan buatan juga populer di beberapa kompetisi.

Terlepas dari kategori masalah di atas, proses menyelesaikan masalah dapat dibagi menjadi 2 langkah utama: membangun algoritme yang efisien dan mengimplementasikannya menggunakan bahasa pemrograman yang sesuai (bahasa pemrograman yang diizinkan pada setiap kompetisi dapat berbeda-beda). Ini adalah kemampuan yang paling sering diuji pada kompetisi pemrograman.

Pada sebagian besar kontes, penilaian dilakukan otomatis oleh komputer, biasanya dikenal sebagai judge. Setiap solusi yang dikirimkan oleh kontestan akan diuji oleh judge melewati serangkaian kasus uji (biasanya rahasia). Secara normal, soal-soal dari kontes memiliki sistem penilaian all-or-none, yang berarti kontestan akan mendapat skor jika dan hanya jika solusi yang mereka berikan berhasil melewati seluruh kasus uji yang diberikan oleh judge, dan tidak akan mendapat apa-apa jika ada paling tidak satu kasus uji yang gagal dilewati. Namun, ada beberapa soal yang memiliki sistem penilaian parsial, yang berarti kontestan akan mendapat skor tergantung dari jumlah kasus uji yang berhasil dilewati, kualitas dari hasil, atau kriteria lainnya. Pada beberapa kontes, kontestan hanya perlu mengirimkan output dari input yang diberikan, lalu judge cukup menganalisa output yang dikirimkan.

Online judge adalah tempat penilaian yang dilakukan secara daring. Online judge memiliki fitur ranklist yang menampilkan peserta yang memiliki jumlah solusi yang berhasil, dan/atau waktu tercepat untuk menyelesaikan masalah.