Reseblogg IOI 2009
Reseblogg från IOI 2009, gymnasie-VM i programmering, som hölls i Plovdiv, Bulgarien. Skriven av lagledaren Jimmy Mårdell (vars dåvarande blogg “blog.yarin.se” inte längre finns kvar - texten är räddad från Internet Archive). Det svenska laget bestod av Simon Lindholm, Rickard Norlander, Rikard Lundmark och Arash Rouhani. Lagledare: Jimmy Mårdell och Fredrik Niemelä.
Snart dags för årets IOI
Den 8-15 augusti går IOI (en internationell programmeringstävling för gymnasieelever) av för stapeln i Plovdiv, Bulgarien. Det är 21:a året i rad som tävlingen anordnas. Första gången var 1989, också det i Bulgarien. Däremellan har tävlingen anordnats över hela världen. 1994 var Sverige arrangör. Ledare för Sveriges delegation i år är undertecknad och Fredrik Niemelä. Deltar gör Arash Rouhani, Rikard Norlander, Simon Lindholm och Rikard Lundmark. De placerade sig bäst i den svenska programmeringsolympiaden som anordnades ute på de svenska gymnasieskolorna i våras. Jag kommer att försöka blogga dagligen på plats i Bulgarien om svenskarnas framfart. Förra årets dagbok finns att läsa på p rogrammeringsolympiadens hemsida .
Plovdiv, dag 1
Igår var det dags för avresa till Bulgarien och IOI (se tidigare inlägg). Vi flög med ett polskt flygbolag vilket jag inte gjort förut, men hela resan förflöt utan incidenter. Destinationen för flyget var Sofia. Där blev vi hämtade med buss tillsammans med ett flertal andra IOI lag för transport till Plovdiv. Den resan tog ca 90 minuter. De senaste två åren har både deltagare och ledare bott i studentbostäder av inte alltför hög kvalité (i Kroatien och Egypten). I år verkar dock arrangörerna bjuda på det bästa - riktigt fina hotell. En nackdel är dock att ledarna bor på ett annat hotell än deltagarna (och det är inte direkt gångavstånd mellan hotellen). Efter att vi släppts av vid deltagarhotellet och registrerat laget blev vi ledare eskorterade till det andra hotellet. Sen dess har jag inte haft någon kontakt med deltagarna och kan därför inte just nu rapportera något om deras förehavanden. Registreringen gick förvånansvärt smärtfritt i år, ett tecken på att de verkar ha tänkt till lite gällande logistiken i år. Som antytts i mina rapporter från de senaste två åren så har den biten brustit ordentligt från arrangörshållet. Internetuppkopplingen på ledarhotellet är dock bedrövlig (otroligt långsam och instabil), vilket är anledningen till att denna första rapport är försenad. Risken finns att rapporterna inte kommer lika tätt som jag ursprungligen tänkt. Att ladda upp bilder är inte att tänka på just nu, men förhoppninngsvis blir det bättre.
Plovdiv, dag 2
Dagen började med en “Practice session”, där deltagarna får bekanta sig med datorerna och tävlingssystemet. Ett antal träningsuppgifter fanns att tillgå så man hade något att fundera på. Det hela löpte på tämligen smärtfritt och alla i laget var nöjda.
Efter lunchen (som intas på respektive hotell) var det dags för årets första utflykt, en rundvandring i gamla stan. Det innebar trånga och vindlade gator. En antik amfiteater undersöktes lite närmare, och tydligen ska prisutdelningen hållas här. Det kan helt klart bli häftig! Därefter traskade vi vidare och titta på några gamla kända hus som nu agerade som galleri. En massa konst helt enkelt. Inte alltför upphetsande då ingen av oss är särskilt konstintresserad.
Efter ett kortare uppehåll i schemat (och möjlighet att byta kläder - det är varmt ute) var det dags för öppningsceremonin. Som alltid brukar dessa tillställningar innehålla många tråkiga tal. Så även i år. Jag tappade räkningen på hur många gånger det upprepades att Bulgarien arrangerade även det första IOI. En sak på pluskontot dock: självaste presidenten i landet invigningstalade och förklarade tävlingen öppnad! Jag har svårt att se Fredrik Reinfeldt göra något liknande om tävlingen hållits i Sverige. Det visar på att denna typ av tävlingar har lite högre status i östvärlden än i väst. Resultatlistorna präglas därefter.
Öppningsceremonin avslutades med “underhållning”, dvs sång och.. ja, någonting. Ett bedrövligt pojkband följdes upp av en fiolspelande tjejgrupp och sist ett stor sällskap som spelade/”sjöng” folkmusik. Det sistnämnde kan nog vara det sämsta jag hört på väldigt länge. Just nu väntar vi på middagen. Därefter låses studenterna in på sina hotellrum medan vi ledare börjar processen att översätta morgondagens uppgifter. Några ord om logistiken också. Gårdagens förhoppningar om att den skulle kunna fungera bra i år verkar ha grusats. Informationsflödet om schemaändringar och liknande existerar inte, så det blir via ryktesspridning vi ledare vet var och när vi ska ta vägen. Deltagarna har det lite lättare då har en guide som leder dem rätt. Det hela har ändå, i mitt tycke, fungerat bättre än förra året även om det inte säger så mycket.
Plovdiv, dag 3
Första tävlingsdagen! Strax innan klockan 9 satt ca 300 deltagare från närmare 80 länder framför sina tävlingsdatorer och väntade på att få börja tackla dagens uppgifter. Själv låg jag då och sov, då ledarna suttit uppe till halv tre på natten och översatt uppgifterna. Nytt för i år är att antalet uppgifter per tävlingsdag är fyra stycken, mot tidigare tre. Ett problem tidigare år är att även den lättaste uppgiften i tävlingen varit alldeles för svår för många av deltagarna. Extrauppgiften (som dessutom är tydligt markerad) är tänkt att lösa det problemet och ligga på en nivå som de flesta klarar av. Fokus där ligger på implementationen och inte val av en effektiv algoritm - en uppgiftstyp som jag brukar benämna “gör-det-som-står”. Namnet på denna uppgift idag var POI . Som väntat klarade alla i det svenska laget den utan problem. Svårighetsnivån på POI kan jämföras med någon av de lättaste uppgifterna i den svenska PO-finalen. Därefter följde Raisins som var ett ganska klassiskt DP problem. Svårighetsgraden motsvarade väl ungefär en av de svårare uppgifterna i PO-finalen. Glädjande nog löste alla i laget den uppgiften, även om Simon tappade 5p pga en aning för ineffektiv implementation. De övriga två uppgifterna, Hiring och Archery blev det dock inte många poäng på, så dagens resultat för svenskarna blev: Simon 199 Rikard L 202 Rickard N 204 Arash 215 Extremt jämnt alltså - det har säkerligen aldrig varit så jämnt mellan de svenska deltagarna efter en tävlingsdag. Arash 15p på den överlägset svåraste uppgiften, Archery , förtjänar också att nämnas. Programmet, i sin helhet, såg ut som följer: int main() { int n; cin » n; cout « n; } Att man överhuvudtaget får poäng på en sådan lösning tyder på en liten miss från de som konstruerat testdatat… Alla i laget verkade glada och nöjda med resultaten. Ingen är borta, och alla är med i matchen om medaljerna. Eftersom resultaten inte publiceras offentligt är det svårt att veta hur de ligger till totalt sett, men poänger mellan 200-250 verkar rätt vanliga (på en rysk programmeringstävlingssite kan man dock se en del nationers poäng - listan brukar kunna vara lite skev dock då de flesta bara rapporterar in de som lyckats någorlunda bra). Andradagen kommer att vara helt avgörande för medaljfördelningen. Det lär krävas minst 200p där också om det ska bli medalj för någon i laget.
Plovdiv, dag 3 (del 2)
På kvällens GA möte bland ledarna visades snabbt ett histogram över poängfördelningen på de olika uppgifterna. Eftersom jag misstänkte att de skulle göra så hade jag kameran framme och fotograferade snabbt de olika histogrammen. Efter att ha zoomat in och studerat noga fick jag fram följande siffror (inte exakt):
| Uppgift | 0-9 | 10-19 | 20-29 | 30-39 | 40-49 | 50-59 | 60-69 | 70-79 | 80-89 | 90-99 | 100 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| POI | 20 | 1 | 0 | 1 | 0 | 3 | 1 | 6 | 1 | 3 | 260 |
| Raisins | 75 | 7 | 7 | 1 | 0 | 0 | 0 | 3 | 1 | 5 | 201 |
| Hiring | 165 | 22 | 8 | 10 | 16 | 24 | 16 | 4 | 10 | 12 | 32 |
| Archery | 145 | 75 | 77 | 8 | 6 | 4 | 1 | 1 | 0 | 0 | 0 |
Flera lag påpekade att skillnaden i svårighetsgrad mellan det näst svåraste problemet (Hiring) och det svåraste (Archery) var rätt stort, och det bekräftades av arrangörerna att detta var planerat. Den andra dagens uppgifter kommer vara jämnare i svårighetsgrad och ligga någonstans däremellan. Det är i mitt tycke rätt förnuftigt att placera tävlingens svåraste uppgift tillsammans med lite lättare uppgifter, så att det finns en vettig chans att klara den. Nu verkar förvisso så inte blivit fallet. Lösningen till Archery fanns beskriven på 4 A4 sidor, så det var kanske inte helt förvånande att ingen verkar ha varit nära full poäng på den. Glömde förresten att lägga upp länk till uppgifterna.
Plovdiv, dag 4
Dagens mellan de båda tävlingsdagarna brukar alltid innehålla någon form av utflykt eller aktivitet, så även i år. IOI deltagarna och ledarna delades in i två grupper, där varje grupp hade en aktivitet på förmiddagen och en annan på eftermiddagen. För Sveriges del var det go-cart som gällde under förmiddagen. Vi åkte buss en kort sträcka till en rätt schysst go-cart bana i Plovdiv. Det fanns dock bara 10 bilar och eftersom gruppen var ungefär 200 personer stor fick man köa ett bra tag om man ville åka några minuter. Rikard, Rickard och Fredrik ville raca och ställde sig i kö, vilket lönade sig efter en knapp timme. Under tiden satt jag, Simon och Arash på läktaren i skuggan och diskuterade programmering. På banan visade Fredrik vem som var äldst och gasade på ordentligt, även om de andra skyllde på att deras bilar gick långsammare. Själv skyller jag mitt avhopp på att jag rätt nyligen åkt go-cart och insett att det är något jag dels inte är bra på och dels inte tycker överdrivet mycket om.
Klart för start! Från vänster, Rikard L, Fredrik och Rickard N.
Fredrik gasar förbi Rikard Lundmark Efter lunchen var det Aqua Land som gällde. Bara de tävlande for dit då både jag och Fredrik jag jobb att göra. Enligt rapporter från deltagarna var det ett stort badställe med massa vattenrutschbanor annat. Norlander och Arash badade friskt medan Lundmark och Simon höll sig mer på den torra sidan. På kvällen låstes deltagarna återigen in på sina hotellrum medan ledarna satte igång med att översätta morgondagens tävlingsuppgifter. Trots en tidigare start på översättning blev formuleringen av uppgifterna från arrangörernas sida inte spikade förrän efter två på natten, så det blev ännu en lång och jobbig kväll.
Plovdiv, dag 5
Andra tävlingsdagen är över. Uppgifterna var denna gång lite svårare än dag 1 generellt sätt, vilket märktes på resultaten. Bortsett från den “triviala uppgiften” (som alla i laget klarade utan problem) så var uppgifterna lite svårare. Den nästa lättaste, Mecho , krävde en lite mer komplicerad variant av BFS sökning där det gällde att hålla tungan rätt i mun. Både Simon och Rickard N hade rätt lösningsidé, men tappade en del poäng pga implementeringsmissar. Simon tog dock en hel del poäng (60) på dagens kanske svåraste uppgift Salesman vilket var starkt gjort. På den sista uppgiften, Regions , blev det dock inte många poäng för den svenska truppen. Slutresultatet dag två blev således att Simon visade att yngst är bäst med 226 poäng (totalt 425p). Därutöver fick Rickard N 141p (345), Arash 119p (336) och Rikard L 104p (306). Även fast vi inte vet var medaljgränserna kommer hamna med säkerhet verkar det mesta tyda på att det endast blir en svensk medalj i år (brons till Simon). Dagens uppgifter för den intresserade. Medan vi väntade på resultaten togs det officiella lagfoton.
Arash, Rickard N, Rikard L, Simon På kvällen ordnades det diskoparty för de tävlande medan ledarna bjöds in på en VIP middag hos borgmästaren. Bästa maten hittills serverades och vi bjöds på högklassig kultur underhållning. Imorgon är det en heldagsutflykt till stranden för de som vill. Vi ville inte. Anledningen? 6 timmars bussresa, enkel väg… avfärd 4.30 på morgonen. Rikard och Rickard funderade lite på att fara, men då vi inte fick (!) splitta upp laget och då nej-rösterna var starkare än ja-rösterna blev det ingen strand.
Plovdiv, dag 6
Som jag skrev i mitt förra inlägg var denna dag tänkt som en heldag på stranden, men eftersom vi (och många andra lag) tackade nej till det blev det istället en helt ledig dag. Jag och Fredrik passade på att göra nyttiga saker (dvs jobba) nästan hela dagen och såg aldrig skymten av deltagarna. Enligt rykten har de ägnat dagen åt att dels bli guidad runt i staden av vår guide, Elia, dels åt att sitta och hacka kod (pokerbotar) på rummet. Då det inte finns så mycket mer att berätta om dagen tänkte jag nämna lite om maten som serveras här, och generellt på IOI. De första dagarna brukar den oftast vara bra (så även i år), men då det i princip är samma mat som serveras en hel vecka blir man rätt less på den. Det som var mest spännande inför vaje måltid (för oss ledare åtminstone) var om lunchen/middagen skulle serveras på nedervåning, övervåningen eller utomhus. Det varierade mer ofta än innehållet i buffén. Under dagens middag kom vi oss för med att fantisera om vilken god mat vi skulle äta när vi kom tillbaka till Sverige - precis som deltagarna i Robinson brukade göra!
Plovdiv, dag 7
Avslutningsdagen innebär normalt sett bara en lång väntan till prisutdelningen på kvällen. Under förmiddagen hade dock ledarna ett avslutande möte där det bestämdes att under nästa IOI (i Kanada) som kommer resultaten inte hållas hemliga efter tävlingen. Det är en fråga som diskuterats under några år, men som framförallt Fredrik pushat extra hårt för. Överraskande var dock det enhälliga stödet från alla andra ledare, där många normalt sätt är rätt konservativa. Hur det exakta utförande kommer att gå till är inte bestämt, men en grundtanke är att det ska vara mer intressant att följa tävlingen live som åskådare. Allteftersom deltagarna skickar in uppgifter kommer övriga världen (men inte de som tävlar) kunna se utfallet av inskickningarna. Det kan bli mycket intressant! Som jag nämnt tidigare hölls prisutdelningen i en gammal romersk amfiteater, vilket bidrog till en mäktig upplevelse. Personligen tyckte jag det var en av de bästa avslutningsceremonier jag varit på i IOI-sammanhang (detta är mitt 6:e IOI som ledare). Bland annat så framfördes Bulgariens bidrag, Water, till Eurovision Song Contest 2007 av originalartisterna, en av mina personliga favoriter det året. Allt avslutades med ett praktfullt fyrverkeri. Själva prisutdelningen var inte så spännande för svenskt vidkommande, då vi i princip visst att Simon skulle få brons och att de andra skulle hamna utanför medaljplatserna. Så blev också fallet. Det är bara att konstantera att det finns väldigt många länder (mestadels från Östeuropea och Asien) som är väldigt bra på programmering i allmänhet och algoritmer i synnerhet. Jag och Fredrik har haft många diskussioner om vad vi ska göra åt saken, hur vi ska kunna få våra deltagare att vara mer förberedda och mer motiverade att träna. Jag kommer att återkomma i ärendet vid ett senare tillfälle.
Från vänster till höger: Fredrik, Rickard N, Rikard L, ( Sven ), Simon, Arash, Jimmy Någar ord också om vinnaren, Genadii Karatzkevitch från Vitryssland ( tourist på TopCoder). Detta var hans fjärde IOI och tredje guld - och killen är bara 14 år!! Det innebär att han kan vara med i ytterligare fyra år…