International Olympiad in Informatics 2013

Vergelijkbare documenten
International Olympiad in Informatics 2013

International Olympiad in Informatics Lang lang geleden, toen de wereld nog nieuw was en de IOI nog niet bedacht was...

Mechanical Doll. doll

Oefententamen 2. Tijd: 2 uur. Maximaal aantal punten: 30. Naam: Studentnummer:

Tentamen Computersystemen

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren

Uitleg. Welkom bij de Beverwedstrijd Je krijgt 15 vragen, die je in maximaal 45 minuten moet beantwoorden.

Oefeningenexamen Informatica: juni 2015

Teamhandleiding DOMjudge (versie 2.2.0muKP) 31 mei 2008

ALGORITMIEK: antwoorden werkcollege 5

Small Basic Programmeren Text Console 2

Functioneel programmeren

Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni, 2010

Programmeren in C++ Efficiënte zoekfunctie in een boek

Tweede college algoritmiek. 12 februari Grafen en bomen

INHOUD. KHLim dep IWT MeRa 1/22

Modelleren en Programmeren

Kernvraag: Hoe kunnen we onszelf beschermen tegen te veel lawaai?

PROS1E1 Handleiding ( ) Kf/Dd/Bd

Stacks and queues. Hoofdstuk 6

Practicum Interactieve Video 18 januari Beta Dag Vrije Universiteit Amsterdam door Winoe Bhikharie. Deel 1: Spelen met Interactieve Video

Het Eindfeest. Algoritmiek Opgave 6, Voorjaar

Tutorial. Microsoft Project 2003

Een combinatorische oplossing voor vraag 10 van de LIMO 2010

WELKOM BIJ BOMBERBOT! LES 2: SEQUENTIES I LES 2: SEQUENTIES I WAAR GAAT DEZE LES OVER? INTRODUCTIE

Les 12 : database koppeling, opmaken van template, webstructuur en afdrukken van gegevens. (deel2).

Onboard auto camera Caméra embarquée

Een eenvoudig algoritme om permutaties te genereren

Presentaties: presenteer jezelf met PowerPoint

Normering en schaallengte

Studentenhandleiding Studentenpagina STUDENTENPAGINA HANDLEIDING VOOR STUDENTEN. Handleiding Studentenpagina 1

Deze korte handleiding legt uit welke stappen je moet zetten om te kunnen lasersnijden.

Verkeerslichten. De Verkeerslichten & de PLC in het TIBBLTO / VICTO lokaal. Werkplek 1. Leer & werkboek.

Workshop XIMPEL TV Winoe Bhikharie Vrije Universiteit Amsterdam / info@ximpel.net

Examen Datastructuren en Algoritmen II

Je leven is een omweg waard Sensibilisering over de spoorveiligheid

Algoritmisch Denken: Dodo s Bit Parity

Oefeningen Jaarproject I

DOMjudge teamhandleiding

Wiskunde 2 september 2008 versie Dit is een greep (combinatie) van 3 uit 32. De volgorde is niet van belang omdat de drie

Lineaire data structuren. Doorlopen van een lijst

Planning. 1. Mini College. 2. Introductiecursus Imperatief Programmeren. 3. Crash and Compile (vanaf 17:00 uur)

Je geeft de antwoorden op deze vragen op papier, tenzij anders is aangegeven.

Informatie over. 5VWO DT51: JavaLogo. Casper Bezemer. Toetsweek 1 13 oktober 2016

Programmeren Blok B. Onderwerpen. wstomv/edu/2ip05/ College 8. Tom Verhoeff

DE NETWERKPRINTER INSTALLEREN

4EE11 Project Programmeren voor W. College 2, , Blok D Tom Verhoeff, Software Engineering & Technology, TU/e

Modelleren en Programmeren

Examen Programmeren I 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni 2011

Werkzaamheden plannen met behulp van hulpmiddelen. Plannen met een planbord. Plannen met de computer

Werkblad huismodule. Quintel Intelligence. Antwoordblad

Tentamen Object Georiënteerd Programmeren TI januari 2013, Afdeling SCT, Faculteit EWI, TU Delft

Tentamen Programmeren in C (EE1400)

Tijdsinstellingen en de volgorde van animaties

recursie Hoofdstuk 5 Studeeraanwijzingen De studielast van deze leereenheid bedraagt circa 6 uur. Terminologie

Examen HAVO. wiskunde B (pilot) tijdvak 1 maandag 23 mei 13:30-16:30 uur. Bij dit examen hoort een uitwerkbijlage.

10 Meer over functies

Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk.

Divide & Conquer: Verdeel en Heers vervolg. Algoritmiek

Handleiding otterportaal deelnemers

Modelleren en Programmeren

Het gebruik van jalbum om fotoalbums te maken. Beknopte handleiding

Site online zetten (webreus)

Handleiding otterportaal deelnemers

Inleiding. Algoritmiek

Handleiding mijn.bardiensten.nl

Leerpaden maken. 1. Account en wachtwoord. 2. Maak een nieuw leerpad aan. 3. Inhoud aan een leerpad toe voegen. 4. Structuur aanbrengen op een pagina.

In BlueJ. Doe onderstaande met muis/menu s:

snelheid in m/s Fig. 2

Opzetten van een evenement

Praktijkwerkboek AKA. Dataverwerking. Mutaties doorvoeren... 8 In deze opdracht voer je mutaties door in een databestand.

Praktijkinstructie Dataverwerking 1 (CSE02.1/CREBO:50236)

Tentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft

Elfde college algoritmiek. 18 mei Algoritme van Dijkstra, Heap, Heapify & Heapsort

opgaven formele structuren deterministische eindige automaten

Inhoudsopgave. Voorwoord... 7 Voordat je begint... 8 Wat heb je nodig?... 9 Voor ouders, verzorgers en leraren... 10

Hoe gelukkig ben je? Opdracht 1

Programmeren A. Genetisch Programma voor het Partitie Probleem. begeleiding:

Mirjams mama en moekie

Dit document bevat informatie over make bij het eerstejaars college Programmeermethoden, Universiteit Leiden, najaar 2010, zie

Inhoudsopgave: Inhoudsopgave 1 Inleiding 2 Televisie menu. 4 Radio menu. 6 MiniGids. 8 TV Gids . Programma informatie oproepen. Kiezen en Kijken...

PO: Informatica Olympiade

Bepaling energie en soortelijke warmte 2D-atoomrooster m.b.v. de Metropolis Monte Carlo methode

Programmeren in Java 3

Workshop Arduino - deel 2

Kangoeroewedstrijd editie Wallabie: jaargang 2012, probleem 1. c Vlaamse Wiskunde Olympiade vzw

December 03, hfst4v2.notebook. Programma. opening paragraaf 1, 2 en 3 van hfst 4 vragen over hfst 3. pw hfst 3: 12 november 5e uur

17 Operaties op bits Bitoperatoren en bitexpressies


techniek breed CSPE BB Bij dit examen horen bijlagen, uitwerkbijlagen en een digitaal bestand.

Algoritmiek. 15 februari Grafen en bomen

Hoofdstuk 16: Zoek- en verwijzingsfuncties

Liefde, voor iedereen gelijk?

Javascript oefenblad 1

Hotelkluis International

1 School aanmaken. 1.1 Directeur aanmelden

7 Omzetten van Recursieve naar Iteratieve Algoritmen

Bedenken: een tekening maken van de held

De stafkaarten van België op cd-rom

Faculteit Economie en Bedrijfskunde

Transcriptie:

International Olympiad in Informatics 2013 6-13 July 2013 Brisbane, Australia Day 2 tasks cave Nederlands (België) 1.0 Je loopt verloren op de lange wandeling van het college naar het UQ Centre, en je stoot op de ingang van een geheim grottensysteem dat diep onder de universiteit loopt. De ingang is geblokkeerd door een veiligheidssysteem dat bestaat uit N opeenvolgende deuren, allemaal achter elkaar; en N schakelaars, waarbij elke schakelaar verbonden is met een verschillende deur. De deuren zijn genummerd 0, 1,, (N - 1) in volgorde, met deur 0 het dichtst bij jou. De schakelaars zijn ook genummerd 0, 1,, (N - 1), maar je weet niet welke schakelaar met welke deur verbonden is. De schakelaars bevinden zich allemaal aan de ingang van de grot. Elke schakelaar kan zich in de stand omhoog of omlaag bevinden. Slechts één van deze standen is juist voor elke schakelaar. Als een schakelaar in de juiste stand staat, dan zal de deur waarmee hij verbonden is open zijn, en als de schakelaar in de foute stand staat dan zal de deur waarmee hij verbonden is gesloten zijn. De juiste stand kan verschillend zijn voor verschillende schakelaars, en je weet niet welke standen de juiste zijn. Je wil dit veiligheidssysteem begrijpen. Om dat te doen, kan je de schakelaars in eender welke combinatie zetten, om daarna de grot in te wandelen om te zien welke de eerste gesloten deur is. Deuren zijn niet transparant: eens je op de eerste gesloten deur botst, kan je de deuren erachter niet zien. Je hebt tijd om 70,000 combinaties van schakelaars uit te proberen, niet meer. Je taak is om te bepalen wat de correcte stand voor elke schakelaar is, en ook welke schakelaar met welke deur verbonden is.

Implementatie Je moet een programma indienen dat de procedure explorecave() implementeert. Deze procedure mag de volgende functie van de grader: trycombination() maximaal 70,000 keer aanroepen. Als laatste moet je de volgende procedure van de grader aanroepen: answer(). Deze functies en procedures worden hieronder beschreven. Grader Functie: trycombination() int trycombination(int S[]); function trycombination(var S: array of LongInt) : LongInt; Deze functie wordt door de grader voorzien. Ze laat je toe om een combinatie van schakelaars uit te proberen, om daarna de grot binnen te gaan en de eerste gesloten deur te bepalen. Als alle deuren open zijn dan geeft de functie -1 als resultaat. Deze functie is van orde O(N) ; d.w.z. de runtime is in het slechtste geval evenredig met N. Je mag deze functie maximaal 70,000 keer aanroepen. S : Een array van lengte N, waarin de stand van elke schakelaar staat aangegeven. Het element S[i] komt overeen met schakelaar i. De waarde 0 geeft aan dat de schakelaar omhoog staat. De waarde 1 geeft aan dat de schakelaar omlaag staat. Resultaat: Het nummer van de eerste deur die gesloten is, of -1 als alle deuren openstaan.

Grader Procedure: answer() void answer(int S[], int D[]); procedure answer(var S, D: array of LongInt); Roep deze procedure aan als je hebt ontdekt wat de juiste combinatie van schakelaars is om alle deuren te openen, en je ook weet bij welke deur elke schakelaar hoort. S : Een array van lengte N, die aangeeft wat de juiste stand van elke schakelaar is. Het formaat is gelijk aan die in de functie trycombination() zoals hierboven beschreven. D : Een array van lengte N, die aangeeft welke deur bij welke schakelaar hoort. Element D[i] moet het nummer van de deur bevatten waarmee schakelaar i is verbonden. Resultaat: Je krijgt geen resultaat. Deze procedure beëindigt jouw programma. Jouw Procedure: explorecave() void explorecave(int N); procedure explorecave(n: longint); Jouw inzending moet deze procedure implementeren. Deze functie moet de grader routine trycombination() gebruiken om te bepalen wat de juiste stand voor elke schakelaar is, en welke deur bij welke schakelaar hoort. Deze functie moet answer() aanroepen zodra je deze informatie hebt bepaald. N : Het aantal schakelaars en deuren in de grot.

Voorbeeldscenario Stel dat de deuren en schakelaars verbonden zijn zoals in de figuur hierboven. Functie-aanroep Resultaat Uitleg trycombination([1, 0, 1, 1]) trycombination([0, 1, 1, 0]) trycombination([1, 1, 1, 0]) answer([1, 1, 1, 0], [3, 1, 0, 2]) 1 3-1 (programma eindigt) Dit komt overeen met de figuur. Schakelaars 0, 2 en 3 staan omlaag; schakelaar 1 staat omhoog. De functie geeft als resultaat 1 om aan te te geven dat deur 1 de eerste gesloten deur is die je tegenkomt. De deuren 0, 1 en 2 zijn nu open; deur drie is gesloten. Door schakelaar 0 ook omlaag te zetten kan je alle deuren openzetten. Dit zie je aan het resultaat -1. We denken dat de correcte combinatie [1, 1, 1, 0] is, en dat de schakelaars 0, 1, 2 en 3 verbonden zijn met respectievelijk deuren 3, 1, 0 en 2. Beperkingen Tijdslimiet: 2 seconden Geheugenlimiet: 32 MiB 1 N 5,000 Subtaken Subtaak Punten Aanvullende beperkingen 1 12 2 13 3 21 N 100 4 30 N 2,000 5 24 (geen) Voor alle i, is schakelaar i verbonden met deur i. Je hoeft alleen te bepalen wat de juiste combinatie is. De juiste combinatie is altijd [0, 0, 0,, 0]. Je hoeft alleen te bepalen welke deur bij welke schakelaar hoort.

Experimenteren De voorbeeldgrader op jouw computer leest invoer uit het bestand cave.in, dat in het volgende formaat is opgesteld: regel 1: N regel 2: S[0] S[1] S[N - 1] regel 3: D[0] D[1] D[N - 1] N is het aantal deuren en schakelaars, S[i] is de juiste stand voor schakelaar i, en D[i] is de deur die hoort bij schakelaar i. Het bovenstaande voorbeeld is dus in het volgende formaat opgesteld: 4 1 1 1 0 3 1 0 2 Taalspecifieke opmerkingen Je moet #include "cave.h" gebruiken. Je moet unit Cave definiëren, en de routines van de grader importeren door uses GraderHelpLib te gebruiken. Alle arrays zijn genummerd vanaf 0 (niet 1 ). Bekijk de modeloplossing op je computer als voorbeeld.