标签:des style blog http color io os ar java
7 2 1 4 5 1 3 3 4 1000 1000 1000 1000 0
8 4000
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cmath> 5 #include <algorithm> 6 #include <climits> 7 #include <vector> 8 #include <queue> 9 #include <cstdlib> 10 #include <string> 11 #include <set> 12 #include <stack> 13 #define LL long long 14 #define pii pair<int,int> 15 #define INF 0x3f3f3f3f 16 using namespace std; 17 const int maxn = 100010; 18 int q[maxn] = {-1},w[maxn],tp,n,h;//w记录前面比自己大的元素个数 19 LL ans; 20 int main(){ 21 while(scanf("%d",&n),n){ 22 ans = tp = 0; 23 for(int i = 0; i <= n; i++){ 24 if(i == n) h = 0; 25 else scanf("%d",&h); 26 if(h > q[tp]){ 27 q[++tp] = h; 28 w[tp] = 1; 29 }else{ 30 LL cnt = 0; 31 while(h <= q[tp]){ 32 ans = max(ans,(cnt+w[tp])*q[tp]);//每次找q中下降的 33 cnt += w[tp--]; 34 } 35 q[++tp] = h; 36 w[tp] = ++cnt;//算上自己 37 } 38 } 39 printf("%I64d\n",ans); 40 } 41 return 0; 42 }
HDU 1506 Largest Rectangle in a Histogram
标签:des style blog http color io os ar java
原文地址:http://www.cnblogs.com/crackpotisback/p/3995605.html