RACE International Olympiad in Informatics 0 Competition Tasks Day French - Français. Course (Race) En parallèle des IOI, la ville de Pattaya va organiser une course : les Olympiades Internationales de Course (OIC) 0. En tant qu'organisateurs, nous devons trouver le meilleur trajet possible pour cette course. Dans la région de Pattaya-Chonburi, il y a N villes reliées par un réseau de N- autoroutes. Chaque autoroute est à double sens et relie deux villes différentes. Sa longueur est un nombre entier de kilomètres. De plus, il y a exactement un chemin possible pour voyager entre toute paire de villes. Plus précisément, il existe exactement une manière de voyager d'une ville à une autre par une séquence d'autoroutes sans passer deux fois par la même ville. L OIC a des règles particulières qui imposent que le trajet ait une longueur totale d exactement K kilomètres et que celui-ci commence et se termine dans des villes différentes. Bien sûr, pour éviter les collisions, aucune autoroute (et donc aucune ville) ne peut être utilisée deux fois au cours du trajet. Afin de minimiser les embouteillages éventuels, le trajet doit être constitué du plus petit nombre d autoroutes possible. Votre objectif Écrivez une fonction best_path(n, K, H, L) qui prend les paramètres suivants : N le nombre de villes. Les villes sont numérotées de 0 à N-. K la longueur requise pour le trajet de la course. H un tableau à deux dimensions représentant les autoroutes. Pour 0 i < N-, l autoroute i relie les villes H[i][0] et H[i][]. L un tableau à une dimension représentant les longueurs des autoroutes. Pour 0 i < N-, la longueur de l autoroute i est L[i]. Vous pouvez considérer que toutes les valeurs contenues dans le tableau H sont comprises entre 0 et N- inclus, et que les autoroutes décrites par ce tableau relient toutes les villes comme indiqué cidessus. Vous pouvez aussi considérer que toutes les valeurs du tableau L sont des entiers compris entre 0 et 000 000 inclus. Parmi les trajets de course valides de longueur exactement K, votre fonction doit retourner le nombre d autoroutes de celui qui en contient le moins. S il n existe de tel trajet, votre fonction doit retourner la valeur -. Page of
RACE International Olympiad in Informatics 0 Competition Tasks Day French - Français. Exemples Exemple Considérez le cas illustré sur la Figure, où N=, K=, 0 Le trajet peut commencer à la ville 0, aller à la ville, et se terminer à la ville. Sa longueur sera exactement km + km = km, et il est constitué de deux autoroutes. Il s'agit du meilleur trajet possible ; best_path(n, K, H, L) doit donc retourner. Figure. Exemple Considérez le cas illustré sur la Figure, où N=, K=, 0 Il n'y a pas de trajet valide. Dans ce cas, best_path(n, K, H, L) doit retourner -. Exemple Considérez le cas illustré sur la figure, où N=, K=, 0 0 0 7 8 8 9 8 0 7 Figure. Un trajet possible consiste en autoroutes : il Figure. commence par la ville, passe par la ville 0 puis la ville et se termine à la ville. Un autre trajet commence à la ville 0, passe par la ville 8 et se termine à la ville. Ces deux trajets ont une longueur d'exactement km comme demandé. Le deuxième est optimal, car il n'existe pas de trajet valide constitué d'une seule autoroute. best_path(n, K, H, L) doit donc retourner. Page of
RACE International Olympiad in Informatics 0 Competition Tasks Day French - Français. Sous-tâches Sous-tâche (9 points) N 00 K 00 Le réseau d'autoroutes forme la ligne la plus simple qui soit : pour 0 i < N-, l'autoroute i relie les villes i et i +. Sous-tâche ( points) N 000 K 000 000 Sous-tâche ( points) N 00 000 K 00 Sous-tâche (7 points) N 00 000 K 000 000 Détails d implémentation Limites Temps d exécution maximal : secondes Limite d utilisation mémoire (RAM) : Mo Remarque : Il n y a pas de limite explicite pour la taille de la pile (stack). La mémoire utilisée par la pile est comptée dans la mémoire totale utilisée. Interface (API) Répertoire d implémentation : race/ Fichier où placer son programme : race.c, race.cpp ou race.pas Interface candidat : race.h ou race.pas Interface évaluateur : race.h ou racelib.pas Évaluateur d exemple : grader.c, grader.cpp ou grader.pas Entrée pour l évaluateur d exemple : grader.in., grader.in.,... Remarque : L évaluateur d exemple lit l entrée selon le format suivant : Ligne : N et K. Lignes à N: informations sur les autoroutes; c-à-d, la ligne i+ contient H[i][0], H[i][], et L[i], séparés par des espaces, pour 0 i < N-. Ligne N+: la solution attendue. La sortie attendue pour l évaluateur d exemple : grader.expect., grader.expect.,... Pour ce sujet, chacun de ces fichiers doit contenir précisément le texte «Correct.» Page of
International Olympiad in Informatics 0 Competition Tasks Day RACE NED / BEL Race Pattaya City organiseert in samenwerking met de IOI een race: de International Olympiad in Racing (IOR) 0. Als organisatie moeten we de beste route voor de race vinden. In het gebied rondom Pattaya liggen N steden die verbonden zijn door een netwerk van N- snelwegen. Elke snelweg kan twee kanten op bereden worden, verbindt exact twee verschillende steden en heeft een integer lengte die gegeven is in kilometers. Bovendien is er tussen elk tweetal steden exact één mogelijke route (dat is, een reeks van verschillende aaneensluitende snelwegen). De IOR-regels gebieden dat de race precies K kilometer lang is en moet beginnen en eindigen in verschillende steden. Om botsingen te voorkomen mag geen enkele snelweg (en dus ook geen enkele stad) meer dan één keer aangedaan worden. Om zoveel mogelijk verkeersproblemen te vermijden moet de route over zo min mogelijk snelwegen gaan. Opdracht Schrijf een functie best_path(n, K, H, L) die de volgende parameters accepteert: ñ N het aantal steden. De steden zijn genummerd van 0 tot en met N-. ñ K de gewenste lengte van de race. ñ H een tweedimensionale array met de snelwegen. Voor 0 i N- geldt dat snelweg i de steden H[i][0] en H[i][] verbindt. ñ L een eendimensionale array met de lengtes van de snelwegen. Voor 0 i N- geldt dat de lengte van snelweg i gelijk is aan L[i]. Alle waarden in de array L zijn van 0 tot en met 000 000. Je functie moet als resultaat opleveren wat het minimale aantal snelwegen is om een geldige route voor de race van lengte K te vinden. Als er geen geldige route bestaat dan moet je functie als resultaat - geven. Voorbeelden Voorbeeld We beschouwen de situatie in figuur. Hiervoor geldt N=, K=, 0 De route kan beginnen in stad 0, dan naar stad gaan en tenslotte eindigen in stad. De lengte is dan precies km + km = km en de route bestaat uit twee snelwegen. Dit is de beste mogelijke route; daarom moet best_path(n, K, H, L) het resultaat opleveren. Figuur. Pagina van
International Olympiad in Informatics 0 Competition Tasks Day RACE NED / BEL Voorbeeld Kijk naar het voorbeeld in figuur. Hiervoor geldt N=, K=, 0 Er is geen geldige mogelijke route. In dit geval moet best_path(n, K, H, L) als resultaat - opleveren. Figuur. Voorbeeld Tenslotte nog een voorbeeld in figuur, hier geldt N=, K=, 0 0 0 7 8 8 9 8 0 7 Een mogelijke route bestaat uit drie snelwegen: van stad via steden 0 en naar stad. Een andere mogelijke begint in stad 0 en gaat via stad 8 naar stad. Beide routes hebben de vereiste lengte van precies km. De laatste is echter optimaal; er is geen geldige route die maar één snelweg bevat. Dus best_path(n, K, H, L) moet als resultaat geven. Subtasks Subtask (9 punten) ñ N 00 ñ K 00 ñ De steden liggen in een rechte lijn: Voor 0 i < N- geldt dat snelweg i de steden i en i+ met elkaar verbindt. Subtask ( punten) ñ N 000 ñ K 000 000 Figuur. Pagina van
International Olympiad in Informatics 0 Competition Tasks Day RACE NED / BEL Subtask ( punten) ñ N 00 000 ñ K 00 Subtask (7 punten) ñ N 00 000 ñ K 000 000 Implementatie details Limieten ñ CPU tijdslimiet: seconden ñ Geheugenlimiet: MB Let op: Er is geen expliciete limiet aan de grootte van de stack; het geheugen dat de stack gebruikt telt mee bij het bepalen van je totale geheugengebruik. Interface (API) ñ Implementatie map: race/ ñ Te implementeren: race.c, race.cpp of race.pas. ñ Interface voor deelnemer: race.h of race.pas. ñ Grader interface: race.h of racelib.pas. ñ Voorbeeldgrader: grader.c, grader.cpp of grader.pas. ñ Voorbeeldgrader invoer: grader.in., grader.in.,... Het bestandsformaat voor de voorbeeldgrader is als volgt: ñ Regel : N en K. ñ Regels t/m N: informatie over de snelwegen, op regel i+ staan H[i][0], H[i][], and L[i], gescheiden door een spatie, 0 i < N-. ñ Regel N+: de uitkomst die verwacht wordt. ñ De verwachte uitvoer voor de grader staat in grader.expect., grader.expect.,... Elk van deze bestanden heeft in principe als inhoud Correct. Pagina van