Challenge 3 - Salle du trésor

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)

Source : https://www.france-ioi.org/