9 条题解
-
0
//游戏代码 #include #include #include #include using namespace std; typedef long long LL; const int MAXN = 1e6 + 10; const int INF = 0x3f; LL n, a[MAXN]; LL stack[MAXN]; LL l[MAXN], r[MAXN], top = 0; int main() { start:cin >> n; if(n == 0)return 0; for (int i = 0;i < n; i++) { cin >> a[i]; } top = 0; a[0] = -1; for(int i = 1;i <= n; i++) { while(top >= 0 && a[i] <= a[ stack[top - 1] ]) top--; l[i] = top == 0 ? 0 : (stack[top - 1] + 1); stack[top++] = i; } top = 0; a[0] = -1; for(int i = n - 1;i >= 0; i--) { while(top > 0 && a[i] <= a[ stack[top - 1] ]) top--; r[i] = top == 0 ? 0 : (stack[top - 1]); stack[top++] = i; } LL ans = 0; for(int i = 1;i <= n;i++){ //cout << l[i] << ' ' << r[i] << ' ' << a[i] << endl; ans = max(ans, (r[i] - l[i]) * a[i]); } cout << ans << endl; goto start; }
信息
- ID
- 42
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 5
- 标签
- 递交数
- 271
- 已通过
- 105
- 上传者