Vous vous trouvez dans ce qui vous semble être la salle principale d'un temple, où vous espérez faire les découvertes les plus extraordinaires.
Le long de la salle se trouvent plusieurs monticules de pierres. Les monticules sont de différentes formes et de différentes tailles, et renferment chacun de nombreux secrets.
À chaque position dans la salle, il y a une certaine hauteur de pierres. Un monticule consiste en une succession de positions contenant des pierres (hauteur > 0), entourée de deux positions ne contenant pas de pierres (hauteur 0).
L'illustration ci-dessus représente le contenu d'une salle avec 4 monticules, dont les volumes sont respectivement de 9, 14, 15 et 13 cases de pierres.
Suivant votre instinct d'explorateur, vous décidez d'explorer en priorité le monticule le plus volumineux. Écrivez un programme qui lit la description de la salle avec les différentes hauteurs de pierres, et qui affiche le volume du monticule qui en contient le plus.
Limites de temps et de mémoire (Python)
- Temps : 1 s sur une machine à 1 GHz.
- Mémoire : 8 000 ko.
Contraintes
- 3 <= nbPositions <= 20 000, le nombre de positions dans la salle.
- 0 <= hauteur <= 1000, la hauteur de pierres d'une colonne.
Entrée
La première ligne de l'entrée contient un entier : nbPositions.
Les nbPositions lignes suivantes décrivent la salle de gauche à droite, et contiennent chacune un entier : la hauteur de pierre d'une position. La première et la dernière colonne ont toujours une hauteur de 0.
Sortie
Vous devez afficher un entier sur la sortie : le volume du plus grand monticule de la salle.
Exemple
entrée :
21 0 2 4 3 0 1 5 3 2 3 0 5 4 5 1 0 1 5 5 2 0
sortie :
15
Commentaires
Pour obtenir 100% des points sur ce sujet, faites attention à écrire un programme ne faisant pas beaucoup plus d'opérations que nécessaire.
EXEMPLE DE CODE
Si vous n'êtes pas très à l'aise avec la lecture de l'entrée ou l'affichage en sortie, vous pouvez vous inspirer de l'exemple de programme suivant. Celui-ci lit la description de la salle et affiche 42.
#include <stdio.h> int main() { int nbColonnes; scanf("%d", &nbColonnes); for(int iColonne = 0; iColonne < nbColonnes; iColonne++) { int hauteur; scanf("%d", &hauteur); } printf("%d\n",42); return 0; }
#include <iostream> using namespace std; int main() { int nbColonnes; cin >> nbColonnes; for(int iColonne = 0; iColonne < nbColonnes; iColonne++) { int hauteur; cin >> hauteur; } cout << 42 << endl; }
import algorea.Scanner; class Main { public static void main(String [] args) { Scanner input = new Scanner(System.in); int nbColonnes = input.nextInt(); for (int iColonne = 0; iColonne < nbColonnes; iColonne = iColonne + 1) { int hauteur = input.nextInt(); } System.out.println(42); } }
void main() { int nbColonnes = readInt(); for (int iColonne = 0; iColonne < nbColonnes; iColonne = iColonne + 1) { int hauteur = readInt(); } println(42); }
let read_int() = Scanf.scanf " %d" (fun x -> x) let nbColonnes = read_int() let _ = for iColonne = 1 to nbColonnes do let hauteur = read_int() in () done; print_int 42; print_newline()
program Solution; var iColonne, nbColonnes, hauteur: LongInt; begin readln(nbColonnes); for iColonne := 1 to nbColonnes do begin readln(hauteur); end; writeln(42) end.
nbColonnes = int(input()) for loop in range(nbColonnes): hauteur = int(input()) print(42)
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.