# Nederlandse Informatica Olympiade

De Nederlandse Informatica Olympiade (NIO) is een programmeerwedstrijd voor leerlingen uit het voortgezet onderwijs. De vier winnaars worden uitgezonden als deelnemers aan de Internationale Informatica Olympiade (IOI). Die wordt elk jaar door een ander land georganiseerd. De Nederlandse wedstrijd zelf bestaat uit een aantal rondes. De NIO wordt georganiseerd door de Stichting Nederlandse Informatica Olympiade in samenwerking met de volgende partijen:
* Christelijke Hogeschool Windesheim
* Eljakim Information Technology
* Technische Universiteit Eindhoven
* Universiteit Leiden
* Universiteit Twente

## Rondes

De deelnemers van het team dat naar de internationale olympiade gaat, worden in drie rondes gekozen:

### Ronde 1

De eerste ronde is een ronde die door de deelnemers thuis gemaakt wordt. Deze ronde bestaat uit meerdere opgaven. In 2017 bestond de olympiade uit iets meer dan tien opgaven. De opgaven mogen in elke willekeurige programmeertaal geschreven worden. De oplossingen moet voor medio januari via het internet ingezonden zijn.

### Ronde 2

De beste deelnemers uit de eerste ronde worden uitgenodigd om mee te doen aan de tweede ronde. De tweede ronde wordt altijd op een zaterdag gehouden in een van de technische universiteiten van Nederland. De opgaven bij de tweede ronde zijn moeilijker dan de opgaven van de eerste ronde. De opgaven van de tweede ronde bestaan altijd uit deelopgaven die proberen om je naar een oplossing toe te leiden.

### Ronde 3

De beste deelnemers uit de tweede ronden worden uitgenodigd om een scholing te volgen. In deze scholing worden geavanceerde algoritmes en datastructuren behandeld. Deze scholing wordt altijd op het kantoor van Eljakim IT gegeven.
Na afloop van de scholing wordt op de derde ronde gehouden. De opgaven van de derde ronde zijn iets eenvoudiger dan de opgaven van de internationale eindronde.
De beste vier leerlingen uit de derde ronde worden uitgenodigd om mee te gaan naar de internationale eindronde. Voorafgaand aan hun vertrek vindt er nog extra begeleiding en training plaats om iedereen goed voor te bereiden op het internationale niveau.

## Opgaven

De deelnemers moeten programma's schrijven om problemen op te lossen. Het gaat hierbij om het schrijven van zo efficiënt mogelijke algoritmes. In de eerste en tweede ronde zijn hiervoor verschillende talen te gebruiken, in de finale wordt men beperkt tot C++ (dezelfde taal(en) als bij de IOI). De programma's moeten meestal lezen van de standaard input en output. De broncode moet ook altijd worden ingeleverd. In de eerste ronde rondes zijn er soms opgaven waarvoor alleen een uitvoerbestand moet worden ingeleverd. Men laat de keus dan open om hiervoor een programma te schrijven of met de hand het uitvoerbestand te maken. Typische opdrachten houden problemen in die te maken hebben met grafen, woorden, getallenpuzzels, spellen en figuren.

## CodeCup

Een van de opgaven van de eerste ronde houdt in dat er een programma wordt geschreven dat aan de CodeCup deelneemt. Er worden dan punten toegekend voor het deelnemen, en voor de einduitslag, en er worden strafpunten toegekend voor de fouten die het programma maakt. De CodeCup is altijd een spel waarbij twee of meer programma's tegen elkaar spelen.