Remarque : Les cours pour ce langage ne sont disponibles que jusqu'au chapitre 4, « Lecture de l'entrée ». Les corrections sont toutefois toujours fournies.
Remarque : Les cours pour ce langage ne sont disponibles que jusqu'au chapitre 4, « Lecture de l'entrée ». Les corrections sont toutefois toujours fournies.
Remarque : Pour un débutant souhaitant apprendre Java, nous conseillons fortement de commencer par JavaScool, plus facile à apprendre, bien que fortement similaire.
Mauvaise nouvelle : votre plafond de retrait hebdomadaire est atteint ! Vous allez devoir survivre sur cette île pendant une semaine avec les trente euros que vous avez encore en poche... Vous finissez par vous en sortir tout de même, mais votre séjour est en partie gâché.
Pour éviter que cette situation ne se reproduise, vous décidez d'écrire un programme pour votre ordinateur de poche, qui vous aide à prévenir ce genre de problèmes.
Ecrivez un programme qui prend en entrée le nombre H d'heures sur lequel le plafond s'applique, le plafond P de dépense maximale pour cette durée et les sommes que vous tentez de dépenser chaque heure.
Pour chaque heure, vous devez vérifier si la dépense prévue pendant cette heure peut être effectuée sans que la somme des dépenses des H dernières heures (heure actuelle comprise) ne dépasse le plafond P. Si une dépense pour une heure implique un dépassement de plafond, alors elle n'est pas acceptée, et n'est donc pas prise en compte pour les heures suivantes.
Limites de temps et de mémoire (Python)
- Temps : 1 s sur une machine à 1 GHz.
- Mémoire : 1 000 ko.
Contraintes
- 1 <= H <= 1000, où H est le nombre d'heures de la période associée au plafond.
- 1 <= P <= 10 000, où P est le plafond : la dépense totale maximale pour toute periode de H heures consécutives.
- 0 <= N <= 500 000, où N est le nombre d'heures pendant lesquelles vous utilisez votre programme.
- 0 <= R <= 10 000, où R est une somme d'argent que vous prévoyez de dépenser pendant une heure donnée.
De plus, dans 50% des tests, N <= 100 000.
Entrée
Chacune des N lignes suivantes correspond à une heure, et contient un entier : la somme R que vous essayez de retirer pendant cette heure.
Sortie
Exemple
entrée :
5 500 15 100 200 200 100 0 50 100 100 50 200 100 150 120 180 25
sortie :
1 1 1 0 1 1 1 1 1 1 0 1 0 0 1
Commentaires
Dépense | Total 5j | Accepté ? | Commentaire |
100 | 100 | Oui | On considère que rien n'est dépensé avant la première heure |
200 | 300 | Oui | 100 + 200 |
200 | 500 | Oui | 100 + 200 + 200 |
100 | 600 | Non | 100 + 200 + 200 + 100 |
0 | 500 | Oui | La dépense de l'heure précédente n'est pas comptée -> 100 + 200 + 200 |
50 | 450 | Oui | 200 + 200 + 0 + 50 |
100 | 350 | Oui | 200 + 0 + 50 + 100 |
100 | 250 | Oui | 0 + 50 + 100 + 100 |
50 | 300 | Oui | 0 + 50 + 100 + 100 + 50 |
200 | 500 | Oui | 50 + 100 + 100 + 50 + 200 |
100 | 550 | Non | 100 + 100 + 50 + 200 + 100 |
150 | 500 | Oui | La dépense de l'heure précédente n'est pas comptée -> 100 + 50 + 200 + 150 |
120 | 520 | Non | 50 + 200 + 150 + 120 |
180 | 530 | Non | 200 + 150 + 180 |
25 | 175 | Oui | 150 + 25 |
Vous devez être connecté(e) pour résoudre ce problème.
L'inscription ne prendra qu'une minute et vous pourrez alors résoudre les exercices puis faire valider automatiquement vos solutions.
Une fois identifié(e), vous pourrez demander sur cette page des conseils pour résoudre le sujet ou demander de l'aide sur le forum d'entraide.
Lorsque vous serez connecté(e), vous pourrez voir vos actions ici.
Une correction sera mise en ligne après la fin de l'épreuve.