hdu1506 & pku2559 Largest Rectangle in a Histogram

hdu1506&pku2559

 

 


 

 

#include<stdio.h>

int H[100005],l[100005],r[100005];
main()
{
	__int64 max,area;
	int i,n;
	while(scanf("%d",&n),n)
	{
		for(i=1;i<=n;i++)
		{
			scanf("%d",&H[i]);
			l[i]=r[i]=i;
		}
		for(i=1;i<=n;i++)
			while(l[i]>1&&H[i]<=H[l[i]-1])
				l[i]=l[l[i]-1];
		for(i=n;i>=1;i--)
			while(r[i]<n&&H[i]<=H[r[i]+1])
				r[i]=r[r[i]+1];
		for(max=0,i=1;i<=n;i++)
		{
			area=(__int64)H[i]*(r[i]-l[i]+1); //area=(__int64)(H[i]*(r[i]-l[i]+1));  wrong?? 
			if(max<area) max=area;
		}
		printf("%I64d\n",max);
	}
} 


 

你可能感兴趣的:(hdu1506 & pku2559 Largest Rectangle in a Histogram)