Korešpondenčný seminár z programovania (KSP) je súťaž programátorov organizovaná skupinou študentov FMFI UK. Je určená pre žiačky a žiakov stredných a základných škôl, ktorí sa chcú zlepšovať v programovaní.

Pre najlepších riešiteľov každoročne organizujeme dve týždenné sústredenia, na ktorých majú jedinečnú možnosť spoznať nových kamarátov, naučiť sa niečo viac o programovaní a zažiť kopec zábavy.

Ako KSP prebieha?

Každý ročník KSP sa skladá z dvoch nezávislých častí - zimnej a letnej. Každá časť má dve kolá, každé kolo obsahuje 8 súťažných úloh. Najlepších riešiteľov zimnej časti pozývame na jarné sústredenie; najlepších riešiteľov letnej časti pozývame na jesenné.

Za každú úlohu sa dá získať 0 až 20 bodov. Úlohy sú v rámci kola zoradené podľa obtiažnosti (toto zoradenie je, samozrejme, subjektívne). Začínajúci riešitelia môžu riešiť všetkých 8 úloh, skúsenejší riešitelia postupne strácajú možnosť súťažne riešiť najľahšie úlohy. Do výsledkov súťaže sa každému započítava 5 najlepšie vyriešených úloh z každého kola. To, kto môže riešiť ktoré úlohy, je určené systémom levelov. Dosiahnuteľné levely sú 1 až 4, riešiteľ s levelom $L$ môže riešiť úlohy s číslom $L$ až 8.

Riešenia súťažných úloh sa odovzdávajú cez formulár priamo pod zadaním do termínu, ktorý je vopred určený. Ku každej úlohe (ak nie je povedané ináč) sa odovzdáva slovný popis a program, ktorý zadanú úlohu rieši. Program bude okamžite po odovzdaní otestovaný a na stránke úlohy sa zjavia výsledky testovania. Slovné popisy opravia vedúci (organizátori) až po konci kola a každému pridelia body. Rozdelenie 20 bodov za úlohu medzi popis a program je vopred napísané v zadaní. Zvyčajne bude za popis pridelených 12 bodov a za program 8 bodov. Popis aj program sa dajú odovzdávať viackrát, avšak počíta sa len posledný popis a posledný program odovzdaný pred určeným termínom kola.

O tom, čo by malo obsahovať vaše riešenie, si môžete prečítať na stránke Ako riešiť.

Doprogramovávanie

Po uplynutí riadneho termínu kola nastáva fáza doprogramovávania. Tá trvá zvyčajne dva týždne a tiež má zverejnený termín, v ktorom končí. Počas tejto fázy sa slovné popisy už odovzdávať nedajú. Stále sa však dajú získať body za naprogramovanie správneho riešenia. Naviac sú počas tejto fázy zverejnené vzorové riešenia, ktoré vám majú pomôcť úlohu vyriešiť a úspešne naprogramovať.

Počas fázy doprogramovávania sa vaše skóre nemôže zhoršiť. Môže sa iba vylepšiť a to až o polovicu bodov, ktoré sa vám nepodarilo získať do uplynutia riadneho termínu. Presnejšie to funguje nasledovne:

Zoberieme posledný submit (t.j. odovzdaný program) riešiteľa pred uplynutím riadneho termínu. Povedzme, že zaň získal $X$ bodov. Potom zoberieme posledný submit zaslaný pred uplynutím doprogramovávacej fázy, nech zaň získal $Y$ bodov. Bodový zisk za programovaciu časť tejto úlohy bude potom $X + \max(0, (Y-X)/2)$, čo je to isté ako $\max(X, (X+Y)/2)$.

Ak napríklad Julka počas riadneho termínu získala za program 5 bodov a počas doprogramovávacej fázy odovzdala program, ktorý získal až 10 bodov, celkovo za program získa 7.5 bodu.

Levely

Každý riešiteľ KSP má priradený level - číslo z rozmedzia 1 až 4. Tento level ovplyvňuje to, ktoré úlohy sa riešiteľovi započítavajú do výsledného poradia. Presnejšie, riešiteľovi na leveli $L$ sa do výsledného poradia započítava 5 najlepšie vyriešených úloh spomedzi úloh $L$ až 8.

Každý žiak, ktorý začne riešiť KSP, začína na leveli 1. Level riešiteľa sa nikdy neznižuje, v priebehu jednej časti sa level nemení, a na začiatku každej časti sa môže zvýšiť dvoma spôsobmi:

  • Ak sa riešiteľ počas predošlej časti zúčastnil sústredenia, na ktoré bol pozvaný ako riešiteľ s levelom $L$, pričom získal aspoň 100 bodov, zvýši sa mu level na $L+1$. Keďže sústredenie pre každú časť sa koná vždy až v priebehu nasledujúcej časti, tento druh postupu sa neprejaví hneď po úspešnej časti.

  • Ak sa riešiteľ v predošlej časti umiestnil v prvej päťke vo výsledkovej listine levelu $L$ a získal v nej aspoň 150 bodov, stúpne mu level na $L+1$.

Výnimkou je level 4, z ktorého sa už vyššie postúpiť nedá.

Príklady výpočtu levelov

Pre lepšie pochopenie fungovania levelov uvádzame nasledovné dva príklady.

Zuzka je šikovná prváčka. Keďže KSP predtým neriešila, začala s levelom 1 a hneď v zimnej časti sa jej podarilo umiestniť v prvej päťke riešiteľov levelu 1 a získala viac ako 150 bodov. Keď teda začala letná časť, Zuzka mala už level 2. Zuzka išla dokonca aj na jarné sústredenie. Na sústredenie bola ale pozvaná z časti, v ktorej mala ešte len level 1 a preto sa jej level už viac nezvýšil.

V letnej časti sa jej darilo trocha menej. Bola síce úspešná, no neumiestnila sa v prvej pätici. Keď teda ako druháčka začala riešiť zimnú časť, bola stále na leveli 2. Počas zimnej časti sa zúčastnila jesenného sústredenia (na ktoré bola pozvaná z letnej časti, ktorú riešila s levelom 2). Zimnú časť teda dokončila na leveli 2, pričom sa jej opäť nepodarilo dostať do prvej pätice. Keď však prišla nasledujúca letná časť, Zuzka mala už level 3 - na jeseň sa totiž zúčastnila sústredenia, kam išla s levelom 2, a preto sa jej level zvýšil.

Zuzkin postup levelmi.
Riško začal riešiť zimnú časť KSP ako tretiak s levelom 1. Nepodarilo sa mu získať 100 bodov, čiže nebol úspešným riešiteľom, no aj tak bol pozvaný na jarné sústredenie.

Počas nasledujúcej letnej časti bol Riško stále na leveli 1 a zúčastnil sa jarného sústredenia. V tejto časti sa mu darilo viac, bol už úspešným riešiteľom a skončil na siedmom mieste. Keď sa ako štvrták pustil do zimnej časti, s prekvapením zistil, že je stále na leveli 1. Síce bol pred touto časťou na sústredení, ale na toto sústredenie nebol pozvaný ako úspešný riešiteľ a teda sa jeho level nezvýšil.

V zimnej časti sa mu darilo. Okrem toho, že bol na jesennom sústredení, vyhral level 1, v leveli 2 skončil na 4 mieste (a získal aj potrebných 150 bodov) a v leveli 3 na peknom desiatom. Letnú časť preto začal rovno s levelom 3, level mu stúpol vďaka tomu, že v predchádzajúcej časti bol v prvej päťke levelu 2.

Riškov postup levelmi.

Príklad Zuzky a Riška by mal dostatočne ilustrovať fungovanie nového systému levelov. Naviac, level sa bude počítať automaticky a bude si ho možné pozrieť na stránke so zadaniami. V prípade nejasností, alebo iných otázok je nás však možné kontaktovať na ksp-info ~ ksp ~ sk.

Odmeny a pozývanie na sústredenie

Úspešný riešiteľ je každý riešiteľ, ktorý v priebehu časti získal aspoň 100 bodov.

Výhercom časti sa stáva riešiteľ, ktorý sa v ľubovoľnej výsledkovke levelu umiestnil na jednom z prvých dvoch miest a zároveň v tomto leveli získal aspoň 150 bodov. Každý výherca potom od nás získa pekné vecné ceny :)

Na sústredenie pozývame aspoň 32 účastníkov. Z každého levelu sa pozývajú úspešní riešitelia, ktorí skončili na jednom z prvých 5 miest. Zvyšní účastníci a aj náhradníci sa pozývajú podľa poradia v celkovej výsledkovke (Celková výsledkovka obsahuje všetkých riešiteľov príslušnej časti. Každému riešiteľovi sa v nej započítava 5 najlepšie vyriešených úloh z úloh, ktoré môže riešiť.).

Organizátori si v neočakávanom prípade vyhradzujú právo zmeniť platnosť vyššie popísaných pravidiel podľa ich najlepšieho uváženia. (Napríklad ak sa na rovnakom mieste výsledkovej listiny umiestni veľké množstvo riešiteľov.)

Čas poslednej úpravy: 8. október 2017 5:45