找出每个矩形以自己的高能延伸到的左右边界
#include<stdio.h>
#include<string.h>
#define maxn 100010
int n;
__int64 max;
struct node{
int left,right;
__int64 num;
}t[maxn];
int main()
{
int i,j,k,l;
while(scanf("%d",&n)&&n!=0)
{
max=-1;
for(i=0;i<n;i++)
{
scanf("%I64d",&t[i+1].num);
t[i+1].left=t[i+1].right=i+1;
}
t[0].num=-1;
t[n+1].num=-1;
for(i=1;i<=n;i++)
{
while(t[i].num<=t[ t[i].left-1 ].num)
t[i].left=t[ t[i].left -1 ].left;
}
for(i=n;i>=1;i--)
{
while(t[i].num<=t[ t[i].right+1 ].num)
t[i].right=t[ t[i].right+1 ].right;
}
for(i=1;i<=n;i++)
{
__int64 tm