FR | EN
Quentin L. Meunier
Maitre de conférence en informatique à Sorbonne Université

Problème 1008

Après une compétition d'athlétisme, Larry Bambel, l'entraîneur, range les dossards des cadets, numérotés entre 1 et 2341 (inclus), dans plusieurs caisses, de sorte qu'un numéro et son triple ne soient jamais dans la même caisse.

Les dossards des minimes, numérotés de 1 à 2N, sont répartis entre deux piles A et B (de N chacune).
Larry prend le plus grand numéro de la A, le plus petit de la B, enregistre leur écart (en valeur absolue) et range les deux dossards dans un carton ; il recommence avec les dossards restants et additionne l'écart au précédent, et ainsi de suite jusqu'à l'épuisement des piles.
En suivant un processus analogue, Larry range ensuite les dossards des benjamins, moins nombreux que les minimes, numérotés de 1 à 2P. Le total des écarts des deux catégories (minimes + benjamins) est 2341.

(s'il y a plusieurs solutions, indiquer celle qui maximise 2A)



Pour ce problème, j'ai fait un programme pour la question 2 uniquement. On remarque que l'énoncé laisse entendre que le résultat obtenu en faisant la somme des valeurs absolues des différences ne varie pas selon la répartition des dossards dans les caisses A et B. On peut commencer par vérifier cela de manière exhausitve sur les valeurs de N croissantes jusqu'à ce que le temps devienne prohibitif (fonction select_recurse()). On remarque bien sûr que ce nombre est N2. Ensuite, il suffit de tester toutes les valeurs de N et P qui vérifient l'énoncé.

Le programme se trouve ici.

Remarque : Pour ce problème, je n'ai pas eu les points de la question 2 car après avoir trouvé N et P, j'ai oublié de multiplier par 2 le résultat...




  • 1A : Le plus grand nombre possible de dossards dans une caisse est 1756.
  • 2A : Il y a 92 minimes et 30 benjamins.