?? 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 + -