📄 pku2559.cpp
字号:
#include <stdio.h>
#define SIZE 101010
__int64 Num[SIZE];
int pre[SIZE], next[SIZE], stack[SIZE];
int N, top;
__int64 Max, tmp;
int main()
{
int i, j;
while (scanf("%d", &N) != -1 && N)
{
for (i = 0; i < N; i++)
{
scanf("%I64d", &Num[i]);
}
stack[0] = -1;
top = 0;
for (i = 0; i < N; i++)
{
while (top != 0 && Num[stack[top]] >= Num[i])
{
top--;
}
stack[++top] = i;
pre[i] = stack[top - 1] + 1;
}
stack[0] = N;
top = 0;
for (i = N - 1; i >= 0; i--)
{
while (top != 0 && Num[stack[top]] >= Num[i])
{
top--;
}
stack[++top] = i;
next[i] = stack[top - 1] - 1;
}
for (i = 0, Max = 0; i < N; i++)
{
tmp = (next[i] - pre[i] + 1) * Num[i];
if (tmp > Max)
{
Max = tmp;
}
}
printf("%I64d\n", Max);
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -