📄 pku1964.cpp
字号:
#include <stdio.h>
#define SIZE 1010
int Num[SIZE];
int pre[SIZE], next[SIZE], stack[SIZE];
int N, M, top;
int Max, tmp;
int FindMax()
{
int 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;
}
}
return Max;
}
int main()
{
int i, j, T, TMP, MAX;
char ch[2];
scanf("%d", &T);
while (T--)
{
scanf("%d %d", &M, &N);
memset(Num, 0, sizeof(Num));
for (i = 0, MAX = 0; i < M; i++)
{
for (j = 0; j < N; j++)
{
scanf("%s", ch);
if (ch[0] == 'R')
{
Num[j] = 0;
}
else
{
Num[j]++;
}
}
TMP = FindMax();
if (TMP > MAX)
{
MAX = TMP;
}
}
printf("%d\n", MAX * 3);
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -