Regler

Allmänt

  1. En deltagare i Programmeringsolympiaden säsongen 20AB-20CD måste under hösten år 20AB (alltså i början av tävlingssäsongen) vara antingen
    • gymnasie- eller grundskoleelev i svensk skola, eller
    • gymnasie- eller grundskoleelev i annat land och svensk medborgare
    samt vara högst 20 år den 1 juli år 20CD.
  2. Under alla tävlingar arrangerade av Programmeringsolympiaden är det tillåtet att använda egen, tidigare skriven kod, andras, tidigare skriven, kod samt söka på Internet och i skrivet material.
  3. Det är under en tävling aldrig tillåtet att kommunicera med andra än domarna angående uppgifterna. Det är t.ex. inte tillåtet att posta en fråga i ett forum om något som är relevant för ett problem (men det är okej att använda sig av existerande svar till samma fråga om den hittas under sökning på Internet).
  4. Tävlingsresultatet är inte slutgiltigt förrän det har bekräftats av tävlingskommittén.
  5. För alla tävlingar kan eventuella överklaganden lämnas in inom 24 timmar från det att tävlingskommittén publicerar tävlingens testfall och meddelat deltagarna detta. Tävlingskommittén tar ställning till varje överklagande, och bekräftar inte resultatet innan alla överklaganden behandlats. Tävlingskommitténs beslut om överklagande kan ej överklagas.

Skolkvalet

  1. Skolkvalet sker på en gymnasie- eller högstadieskola där en ansvarig lärare har anmält sig att arrangera tävlingen.
  2. Tid och datum för skolkvalet bestäms av den ansvariga läraren, bland något av de datum som tävlingskommittén bestämmer.
  3. Deltagare i skolkvalet anmäler sig direkt till den ansvariga läraren. En deltagare behöver inte delta på sin egen skola, men en skola har inget tvång att ta emot deltagare från andra skolor.
  4. Skolkvalets längd är 4 timmar i sträck. Tiden fortsätter alltså ticka ner även om deltagaren tar paus.
  5. Deltagare får använda vilken dator de själva vill, programmera i vilket språk som helst och använda vilken kompilator som helst.
  6. In- och utdata sker genom ett interaktivt gränssnitt med den användare som rättar. Gränssnittet kan exempelvis vara textbaserat i terminalen, genom inläsning och utskrift till filer, grafiskt eller genom ifyllande och utläsande av celler i ett kalkylblad.
  7. Rättningen sker manuellt av en ansvarig lärare efter tävlingen.

Onlinekvalet

  1. Onlinekvalet sker på Programmeringsolympiadens rättningssystem för programmeringsuppgifter, Kattis.
  2. Tävlingen pågår under en tid specifierad av tävlingskommittén.
  3. Anmälan till tävlingen sker direkt i rättningssystemet.
  4. Hela onlinekvalets längd kan utnyttjas av deltagare.
  5. Enbart de programmeringsspråk och kompilatorer som Kattis stödjer kan användas under onlinekvalet.

Finalen

  1. Till finalen kvalificeras alla deltagare som i skolkvalet får minst lika många poäng som skolkvalsgränsen, och alla deltagare som i onlinekvalet får minst lika många poäng som onlinekvalsgränsen. Dessa gränser specifieras av tävlingskommittén efter de båda kvaltävlingarnas slut.
  2. Vinnaren i finaltävlingen utses till svensk gymnasiemästare i programmering. Vid delad förstaplats är titeln delad.
  3. Finalen sker på plats annonserad av tävlingskommittén.
  4. Finalen använder Programmeringsolympiadens rättningssystem för programmeringsuppgifter, Kattis.
  5. Tävlingen är 5 timmar lång.
  6. Enbart de programmeringsspråk och kompilatorer som Kattis stödjer kan användas under finalen.
  7. Deltagande i finalen måste ske på plats för att räknas med i de officiella resultaten. Under särskilda omständigheter kan tävlingskommittén besluta att ett deltagande på distans får räknas med för landslagsuttagningen.

KATT-tävlingarna

  1. KATT-tävlingarna sker på ett rättningssystem (inte nödvändigtvis Kattis) uppsatt av tävlingskommittén.
  2. Tävlingen pågår under en tid specificerad av tävlingskommittén.
  3. Anmälan till tävlingen sker direkt i rättningssystemet.
  4. Enbart de programmeringsspråk som stöds i det närmast kommande IOI är garanterade att kunna användas under KATT. För närvarande är detta C++.

Teoribladet

Teoribladet består i regel av 4 problem. Momentet går ut på att skriftligt beskriva algoritmer som löser problemen. Tävlingen pågår i 2 veckor. Vid sen inlämning gäller följande avdrag. Anta att du efter rättning hade fått X poäng.
  1. Om du lämnar in 1h sent får du X*0.95 poäng
  2. Om du lämnar in 12h sent får du X*0.7 poäng
  3. Om du lämnar in 24h sent får du X*0.5 poäng
  4. Om du lämnar in senare får du 0 poäng
Om ett problem diskuterats i publika kanaler innan lösningarna lämnats in (sent) kommer poängen på det problemet att nollas.

Landslagsuttagning

Uttagningen består av flera delmoment som vägs ihop. Vägningen sker på följande vis: varje moment har en vikt V. Om högsta poängen på ett moment är M och du får P poäng, så blir det viktade resultat P/M*V. Exempelvis, om du får 240/600 poäng på finalen, och finalen har vikt 100, så får du 40 uttagningspoäng. Delmomenten och dess vikter under 2024 var följande. Notera att dessa kan komma att ändras från år till år.
  1. Finalen (100)
  2. Lägertävlingen (100)
  3. Teoriblad (50)
  4. KATT (100)
  5. Nordiska Programmeringsolympiaden (100)
  6. Långtävling (100)
En förutsättning för att skickas på internationell tävling är att kunna programmeringsspråket som man kan använda under tävlingen. I dagsläget är endast C++ garanterat. På grund av detta garanteras ej att uppgifter under uttagningen är lösbara i andra språk än C++ efter finalen. De elever med de 4 bästa resultaten blir valda till landslag och får tävla i IOI. IOI-landslaget får även tävla i BOI. I BOI finns det 6 platser, och i regel ges de 2 sista platserna till de elever med högst poäng som inte går i trean. Undantag kan ske i avsaknad av icke-treor som gjort alla uttagningsmoment, eller om IOI-laget har flera icke-treor och poängskillnaden mellan trean och icke-trean som inte är med i IOI-laget är väldigt stor.

Upsolving

Under de flesta uttagningsmomenten kommer man kunna så kallat "upsolva" problem. Detta innebär att lösa problemen i efterhand. Om du fick X poäng under tävlingen och Y poäng totalt efter upsolving är din slutgiltiga poäng på tävlingen X+(Y-X)*0.3. Dvs, att lösa problem i efterhand ger 30% av poängen. Den exakta siffran kan variera från år till år.

Språk

Vi garanterar endast att problemformuleringar tillhandahålls på Svenska. Ofta tillhandahåller vi även problemformuleringar på Engelska, men detta är inte garanterat.

Vad kan komma på tävlingar

Om du tränar på landslagsnivå kan det vara värt att känna till IOI syllabus. Detta dokument beskriver utförligt vad som kan dyka upp på IOI. Vi försöker till största del följa detta dokumentet, men gör ibland undantag. Exempelvis använde proteinsyntes från onlinekvalet 2024 stränghashning. Om vi ska undangå IOI syllabus kommer detta helst vara på en tävling längre än 5 timmar, och kommer med största sannolikhet vara välkända och relativt lättimplementerade algoritmer. Exempelvis kanske stränghashning eller 2D segmentträd kommer, medan det i princip är garanterat att linjärprogrammering eller matroid intersection inte kommer.