El rectángulo más grande Descripción del problema Hay n rectángulos adyacentes en el eje horizontal, el ancho de cada rectángulo es 1 y la altura del i-ésimo (1 ≤ i ≤ n) rectángulo es hi. Estos n rectángulos forman un histograma. Por ejemplo, las alturas de los seis rectángulos en la siguiente figura son 3, 1, 6, 5, 2, 3. Encuentre el rectángulo con el área más grande que se puede colocar en el histograma dado, y sus lados deben ser paralelos al eje de coordenadas. Para el ejemplo anterior, el rectángulo más grande es la parte sombreada que se muestra en la figura siguiente, y el área es 10. Formato de entrada La primera línea contiene un número entero n, el número de rectángulos (1 ≤ n ≤ 1000). La segunda línea contiene n números enteros h1, h2,…, hn y los números adyacentes están separados por espacios. (1 ≤ hi ≤ 10000). hi es la altura del i-ésimo rectángulo. Formato de salida Muestra una línea que contiene un número entero, es decir, el área del rectángulo más grande en el histograma dado. Entrada de muestra 6 3 1 6 5 2 3 Salida de muestra 10
#include<bits/stdc++.h>
using namespace std;intmain(){
int n, a[1010], area, temp, ans =0;
cin>>n;for(int i =0; i < n; i++)
cin>>a[i];
a[n]=0;
stack<int> s;for(int i =0; i <= n; i++)if(s.empty()|| a[s.top()]< a[i])
s.push(i);else{
temp = s.top();
s.pop();
area = a[temp]*(s.empty()? i : i - s.top()-1);if(area > ans)
ans = area;
i--;}
cout<<ans<<endl;return0;}