Thứ Sáu, 13 tháng 5, 2022

AREA0 PASCAL

var i,j,m,n,x,y,s,max:longint;
a,f,b:array[0..1000,0..1000] of longint;
procedure nhap;
var i:longint;
begin
    readln(m,n);
        for i:=1 to m do
        begin
                for j:=1 to n do read(a[i,j]);
                readln;
        end;

end;
procedure tinh_f;
begin
        for i:=1 to m do
        for j:=1 to n do
        f[i,j]:=f[i-1,j]+f[i,j-1]-f[i-1,j-1]+a[i,j];
end;
function check(i,j,x,y:longint):boolean;
begin
        s:=f[x,y]-f[i-1,y]-f[x,j-1]+f[i-1,j-1];
        if s=0 then exit(true) else
        exit(false);
end;
procedure tim_hcn(t,j:longint);
begin
        y:=j;
        while (y<n) and (check(i,j,i,y+1)=true)
        do inc(y);
        b[i,j]:=y-j+1;
        for x:=i+1 to m do
        begin
                while (y>=j) and (check(i,j,x,y)=false) do
                dec(y);

               // if yj then break;
                if b[i,j]<(x-i+1)*(y-j+1) then b[i,j]:=(x-i+1)*(y-j+1);
        end;
end;
procedure giai;
begin
        for i:=1 to m do
        begin
                for j:=1 to n do
                if a[i,j]=1 then b[i,j]:=0
         else tim_hcn(i,j);
        end;
end;
procedure xuat;
var i:longint;
begin
    for i:=1 to m do
        begin
                for j:=1 to n do write(b[i,j],' ');
                writeln;
        end;
end;
begin
        assign(input,'area0.inp');
        reset(input);
        assign(output,'area0.out');
        rewrite(output);
    nhap;
    tinh_f;
        giai;
    xuat;
        close(input);
        close(output);
end.

Không có nhận xét nào:

Đăng nhận xét

Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.