p2180.pas
来自「高手写的所有acm例程 在acm.zju.edu.cn 上的题目的例程」· PAS 代码 · 共 84 行
PAS
84 行
PROGRAM p2180;
CONST
maxn=1000;
VAR
map :array[1..maxn,1..maxn]of Boolean;
up,down :array[1..maxn,1..maxn]of Integer;
lup,ldown :Longint;
ans,n,m,part,start :Longint;
PROCEDURE Readin;
var
ch :Char;
i,j :Integer;
begin
readln(n,m);
for i:=1 to n do
begin
for j:=1 to m do
begin
if j>1 then read(ch);
read(ch);
if ch='F' then map[i][j]:=true
else map[i][j]:=false;
end;
readln;
end;
end;
PROCEDURE Main;
var
i,j :Integer;
begin
ans:=0;
for i:=1 to m do
begin
if map[1][i] then up[1][i]:=1 else up[1][i]:=0;
if map[n][i] then down[n][i]:=1 else down[n][i]:=0;
end;
for i:=2 to n do
for j:=1 to m do
begin
if map[i][j] then up[i][j]:=up[i-1][j]+1
else up[i][j]:=0;
if map[n-i+1][j] then down[n-i+1][j]:=down[n-i+2][j]+1
else down[n-i+1][j]:=0;
end;
for i:=1 to n do
begin
lup:=0;
ldown:=0;
for j:=1 to m do
begin
if Lup=0 then
begin
Lup:=up[i][j];
Ldown:=down[i][j];
start:=j;
end else
begin
if up[i][j]<Lup then Lup:=up[i][j];
if down[i][j]<Ldown then Ldown:=down[i][j];
end;
if (Lup+Ldown-1) * (j-start+1) >ans then
ans:=(Lup+Ldown-1) * (j-start+1);
end;
end;
writeln(ans*3);
end;
BEGIN
//assign(input,'p.in');
//reset(input);
readln(part);
for part:=part downto 1 do
begin
Readin;
Main;
end;
END.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?