Súťaž sa skladá z domáceho, krajského a v kategórii A aj celoštátneho kola.
Za každú úlohu domáceho kola sa dá získať od 0 do 10 bodov. Riešenia úloh odovzdávajú súťažiaci sami v elektronickej podobe priamo tu na stránkach OI, a to najneskôr v deň uvedený v zadaniach príslušnej kategórie. Na základe bodov domáceho kola stanoví Slovenská komisia OI (SK OI) pre každú kategóriu bodovú hranicu potrebnú na postup do krajského kola. Očakávame, že táto hranica bude približne rovná tretine maximálneho počtu bodov.
V krajskom kole riešitelia riešia štyri teoretické úlohy, ktoré môžu tematicky nadväzovať na úlohy domáceho kola. V kategórii B súťaž týmto kolom končí. V kategórii A sú v každom kraji vyhlásení víťazi krajského kola a následne je na základe spoločnej celoštátnej výsledkovej listiny najlepších približne 30 riešiteľov pozvaných do celoštátneho kola.
Celoštátne kolo má dva súťažné dni. Účastníci v prvý deň riešia teoretické a v druhý deň praktické úlohy. Najlepší riešitelia sú vyhlásení za víťazov.
Približne desať najlepších riešiteľov následne SK OI pozve na týždňové výberové sústredenie. Podľa jeho výsledkov SK OI vyberie družstvá pre Medzinárodnú olympiádu v informatike (IOI) a Stredoeurópsku olympiádu v informatike (CEOI).
Najlepšie štyri riešiteľky kategórie A (podľa výberového sústredenia alebo poradia najvyššieho kola, z ktorého ďalej postúpia menej ako štyri) postúpia na Medzinárodnú dievčenskú olympiádu v informatike (EGOI).
V praktických úlohách je vašou úlohou vytvoriť program, ktorý bude riešiť zadanú úlohu. Program musí byť v prvom rade korektný a funkčný, v druhom rade sa snažte aby bol čo najefektívnejší.
V kategórii B môžete použiť ľubovoľný programovací jazyk.
V kategórii A musíte riešenia praktických úloh písať v jednom z podporovaných jazykov (napr. C++, Pascal alebo Java). Presný zoznam podporovaných jazykov vrátane konkrétnych verzií ich kompilátorov a interpreterov nájdete v systéme na odovzdávanie riešení. Taktiež tam nájdete presnejší popis toho, ako sa majú vaše programy správať, napr. detaily realizácie vstupu a výstupu.
Odovzdaný program bude automaticky otestovaný na viacerých vopred pripravených testovacích vstupoch. Podľa toho, na koľko z nich dá správnu odpoveď, vám budú pridelené body. Výsledok testovania sa dozviete krátko po odovzdaní. Ak váš program nezíska plný počet bodov, budete ho môcť vylepšiť a odovzdať znova, až do uplynutia termínu na odovzdávanie.
Ak nie je v zadaní povedané ináč, riešenia teoretických úloh musia obsahovať:
Ak používate v programe netriviálne algoritmy alebo dátové štruktúry (napr. rôzne súčasti STL v C++), súčasťou slovného popisu algoritmu by mal byť stručný popis ich implementácie.