7 条题解
-
2
C++:
#include
#include
#include
using namespace std;
int q[100001];
int a[100001];
int n,t;
int ll;
//int h[100001];
int l[100001];
int r[100001];
void make(int an[100001])
{ //int l=1;
ll=0; a[0]=-1; for(int i=1;i<=n;i++) { while(a[q[ll]]>=a[i]) { ll--; } an[i]=q[ll]; q[++ll]=i; }
}
long long maxn;
int main()
{
while(scanf("%d",&n)) { if(n==0) { return 0; } for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } a[0]=-1; make(l); reverse(a+1,a+1+n); make(r); //int j=n; maxn=0; for(int i=1,j=n;i<=n;i++,j--) { maxn=max(maxn,a[i]*(n-l[j]-r[i]+1-(long long)(1))); // j--; } printf("%lld\n",maxn); }
}
信息
- ID
- 42
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 5
- 标签
- 递交数
- 221
- 已通过
- 89
- 上传者