Tävlingsregler

IDA-Mästerskapet i Programmering och Algoritmer (IMPA) är en programmeringstävling för studenter vid Linköpings universitet. Alla som har ett student-LIUID räknas som student. Den aktuella tävlingen pågår från den 15:e januari till den 19:e maj 2024 och består av 6 omgångar som var och en omfattar 3 veckor. Varje omgång är en egen tävling med egna vinster.

Tävlingen är individuell vilket innebär att varje deltagare själv ska lösa uppgifterna. Det är tillåtet att diskutera programmering, algoritmer och problemlösning med andra samt att använda färdiga implementationer av kända algoritmer. Det är inte tillåtet att ta färdiga eller nästan färdiga lösningar på problemen vare sig de kommer från andra deltagare eller från andra källor. Om tävlingsledningen misstänker fusk måste den tävlande skicka in sin kod för granskning. Tävlingsledaren har rätt att avgöra om det är fusk eller ej och vad straffet blir. Beslut kan inte överklagas.

Vinnare av en omgång är den som samlat ihop flest poäng under omgången. Om flera personer har lika många poäng så är det den som har löst flest mycket svåra uppgifter som vinner. Om flera personer har lika många poäng och har löst lika många mycket svåra uppgifter så är det den som har löst flest svåra uppgifter som vinner, osv.

Tävlingen går ut på att skapa och delta i utmaningar av varierande svårighetsgrad. Varje utmaning består av en uppgift från UVA som ska lösas. UVA stödjer för tillfället C, C++, Java och Pascal. För att kontrollera om ni har löst uppgiften skickar ni er kod till UVA via deras submitfunktion, som kräver att ni är inloggade på UVA. Vårt system kollar automatiskt mot UVA vilka uppgifter ni har löst så när en uppgift är löst på UVA behöver ni inte göra mer. Vi kräver endast att ni skickar in koden till oss om vi misstänker fusk. Det finns tre olika typer av utmaningar som ger olika mycket poäng: Självutmaningar, globala utmaningar och veckoutmaningar. Varje deltagare får ha som mest 5 aktiva utmaningar förutom veckoutmaningarna. Om en utmaning har aktiverats kan den inte avbrytas förrän efter tidigast 24 timmar, den kan dock lösas snabbare.

Veckoutmaning: Varje vecka finns det tre utvalda uppgifter av varierande svårighetsgrad, dessa kallas veckoutmaningar. För varje uppgift som löses under veckan fås 4 grundpoäng. För varje uppgift som löses efter veckan fås 2 grundpoäng. Om någon deltagare löst uppgiften tidigare så kan de inte få poäng för den igen.

Självutmaning: Varje deltagare kan utmana sig själv på en uppgift av valfri svårighetsgrad. Uppgiften fås omedelbart och slumpas ut från vår databas med problem. Om uppgiften löses så ger den 1 grundpoäng oberoende av hur lång tid det tog att lösa den.

Global utmaning: Varje deltagare kan utmana alla andra deltagare på en uppgift av valfri svårighetsgrad. Uppgiften fås omedelbart och slumpas ut från vår databas med problem. Alla övriga deltagare, som inte redan löst uppgiften, får veta att det finns en global utmaning att delta i och dess svårighetsgrad. Om de aktiverar utmaningen får de reda på vilken uppgift det är. Alla som löser uppgiften inom en vecka från aktiveringstillfället får 2 grundpoäng. Om den löses efter en vecka fås 1 grundpoäng.

Poängen som en uppgift ger beror på vilken typ av utmaning det är, hur snabbt problemet löstes samt hur svårt problemet är. Det finns fem svårighetsgrader: Mycket lätt (1x), ganska lätt (2x), medelsvår (4x), ganska svårt (8x) och mycket svårt (16x). En tabell som sammanfattar poängen finns nedan.

UtmaningstypNär problemet löstesMycket lättGanska lättMedelsvårGanska svårtMycket svårt
SjälvutmaningNär som helst124816
Global utmaningInom en vecka2481632
Global utmaningEfter en vecka124816
VeckoutmaningInom en vecka48163264
VeckoutmaningEfter en vecka2481632

Den slutgiltiga poängen beror på vilken nivå den tävlande är på. Ju fler och svårare uppgifter en deltagare har löst desto högre nivå är han/hon på och desto färre poäng fås för en uppgift. En tävlandes totala nivåpoäng är summan av svårighetsmultiplikatorn för alla uppgifter som lösts inom IMPA. Exempel: Om en deltagare löst 2 mycket lätta (2x1=2 nivåpoäng), 5 ganska lätta (5x2=10 nivåpoäng), 10 medelsvåra (10x4=40 nivåpoäng), 10 ganska svåra (10x8=80 nivåpoäng) och 1 mycket svår (1x16=16 nivåpoäng) uppgifter har han/hon 148 nivåpoäng. Det finns tre nivåer: nivå 1 (0-100 poäng, 4x), nivå 2 (101-300 poäng, 2x) och nivå 3 (301- poäng, 1x). Syftet med nivåer är att göra det möjligt för nybörjare att tävla mot veteraner. Exempel: En nybörjare på nivå 1 får lika många poäng för en mycket lätt uppgift (1x4) som en erfaren deltagare får för en ganska lätt (2x2) och en veteran får för en medelsvår (4x1).

Tävlingsledaren har rätt att ändra reglerna efter behov och att tolka dem om de är oklara. Beslut kan inte överklagas.

Omgångar

Tävlingen består av 6 omgångar som var och en omfattar 3 veckor.

Omgång 1: 15 jan -  4 feb
Omgång 2:  5 feb - 25 feb
Omgång 3: 26 feb - 17 mar
Omgång 4: 18 mar -  7 apr
Omgång 5:  8 apr - 28 apr
Omgång 6: 29 apr - 19 maj

Priser

IMPAs sponsorer Axis, MindRoad och Opera Software delar generöst ut priser till vinnarna enligt nedan. Vinster delas ut i slutet på varje termin. Priserna delas ut i form av presentkort från affärer där det går att få dem via epost efter överenskommelse mellan LiTHs Kods kassör och respektive vinnare. Vinnarna har en begränsad tid på sig att hämta ut sina vinster, vanligtvis 2 månader. Eventuell vinstskatt betalas av vinnaren.

Varje omgång delas följande priser ut

1:a pris1000kr
2:a pris600kr
3:e pris400kr
4-6:e pris200kr
7-10:e pris100kr