Niveau 2
Joseph Marchand produit des ballons de baudruche. Pour monétiser au mieux son activité, il regarde régulièrement sur VisageLivre™ les anniversaires de ses amis afin de leur vendre des ballons. Cependant, Joseph Marchand est fainéant et veut donc produire tous ses ballons en une fois pour être tranquille ensuite. Il veut évidemment aussi en produire le nombre minimal.
Pour chaque anniversaire, un nombre de ballons est nécessaire. À la fin de l'anniversaire, ballons sont craqués et les autres ballons sont encore en bon état. Radin comme il est, Joseph les récupère pour les anniversaires suivants.
En supposant que vous ayez la liste des prochains anniversaires, déterminez le nombre de ballons à produire au départ pour en avoir suffisamment pour tous les anniversaires.
Exemple d'entrée
2 20 20
Exemple de sortie
30
Exemple d'entrée
4 10 20 30 40
Exemple de sortie
70
Exemple d'entrée
3 80 10 80
Exemple de sortie
125
Si on prend en entrée ces 3 anniversaires : et .
On voit qu'il faut :
Il me faut alors au total : ballons, soit .
""" auteur : Franck CHAMBON Régional 2011 - Problème 5 - Anniversaires https://prologin.org/train/2011/semifinal/anniversaires """ # 0. Cœur du problème def nb_ballons(ma_liste: list) -> int: """Renvoie le nombre de ballons nécessaires suivant l'énoncé. >>> nb_ballons([20, 20]) 30 >>> nb_ballons([10, 20, 30, 40]) 70 >>> nb_ballons([80, 10, 80]) 125 """ stock = 0 besoin_total = 0 for x in ma_liste: if x > stock: besoin_total += x - stock stock = x // 2 else: stock -= x // 2 return besoin_total import doctest doctest.testmod() # 1. Lecture nb_anniversaires = int(input()) anniversaires = list(map(int, input().split())) # 2. Écriture print(nb_ballons(anniversaires))