p1716.pas
来自「高手写的所有acm例程 在acm.zju.edu.cn 上的题目的例程」· PAS 代码 · 共 63 行
PAS
63 行
PROGRAM p1716;
VAR
total,sa,sb,h,w :Integer;
map :array[1..500,1..500]of 0..1;
partsum,ans :array[0..500,0..500]of Integer;
PROCEDURE Readin;
var
i,a,b,j :Integer;
begin
fillchar(partsum,sizeof(partsum),0);
fillchar(ans,sizeof(ans),0);
fillchar(map,sizeof(map),0);
readln(h,w);
for i:=1 to total do
begin
readln(a,b);
map[a][b]:=1;
end;
for i:=1 to h do
for j:=1 to w do
if map[i][j]=1 then partsum[i][j]:=partsum[i][j-1]+1
else partsum[i][j]:=partsum[i][j-1];
readln(sa,sb);
end;
PROCEDURE Main;
var
i,j,answer :Integer;
begin
if (sa>h)or(sb>w) then
begin
writeln(0);
exit;
end;
answer:=0;
for j:=sb to w do
begin
for i:=1 to sa do
ans[sa][j]:=ans[sa][j]+partsum[i][j]-partsum[i][j-sb];
if ans[sa][j]>answer then answer:=ans[sa][j];
end;
for i:=sa+1 to h do
for j:=sb to w do
begin
ans[i][j]:=ans[i-1][j]-partsum[i-sa][j]+partsum[i-sa][j-sb]+partsum[i][j]-partsum[i][j-sb];
if ans[i][j]>answer then answer:=ans[i][j];
end;
writeln(answer);
end;
BEGIN
//assign(input,'p.in');
//reset(input);
readln(total);
while (total<>0) do
begin
Readin;
Main;
readln(total);
end;
END.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?