题目描述
blablabla
样例
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long LL;
const int N = 100010;
int n ;
int h[N],l[N],r[N],q[N];
int main()
{
while(scanf("%d",&n),n)
{
for(int i=1 ; i <= n ; i++) scanf("%d",&h[i]);
int tt=0;
h[0] = h[n+1] = -1;
q[0] = 0;
for(int i = 1 ; i <= n ; i++)
{
while(h[i] <= h[q[tt]] ) tt--;
l[i] = q[tt];
q[++tt] = i;
}
tt = 0;
q[0] = n+1;
for(int i=n;i;i--)
{
while(h[i] <= h[q[tt]]) tt--;
r[i] = q[tt];
q[++tt] = i;
}
LL res = 0;
for(int i=1;i<=n;i++)
res = max(res,(LL)h[i]*(r[i]-l[i]-1));
printf("%lld\n",res);
}
return 0;
}
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla