Pascal

Modified: Wednesday, 22-12-2021 07:00 AM

Trong một cuộc thi X tại thị trấn Y, Nam đạt giải xuất sắc. Ban giám khảo quyết định cho Nam được chọn một số món quà theo quy luật sau:

Trên một bàn sắp xếp các món quà với kích thước n x n (1 ≤ n ≤ 1000).
Mỗi món quà có giá trị không quá 10^9.
Nam được phép chọn những món quà được sắp trên bàn với phạm vi là 1 hình thoi với bán kính "r" do Ban giám khảo quy định.
Biết rằng hình thoi có tâm là (x0,y0) và thỏa điều kiện |x - x0| + |y - y0| ≤ r

Hãy giúp Nam chọn được vị trí có tổng giá trị lớn nhất cùng tổng giá trị quà mà Nam nhận được.

Ví dụ bàn quà 4 x 4 như sau với r = 1: => Output: 3 3 45

1 1 1 1
9 9 9 9
1 9 9 9
9 9 9 1

 



var f:text;
    a:array[1..1000,1..1000] of longint;
        i,j,imax,jmax,n,r:integer;
    Result:longint;

function sum(xsum,ysum:integer):longint;
var isum,jsum:integer;
    ssum:longint;
begin
    ssum:=0;
    for isum:=xsum-r to xsum+r do 
    for jsum:=ysum-r to ysum+r do 
        if (abs(isum-xsum)+abs(jsum-ysum)<=r) then
        inc(ssum,a[isum,jsum]);
    
    exit(ssum);
end;

begin
    assign(f,'input.txt');reset(f);
    read(f,n,r);
    for i:=1 to n do 
        for j:=1 to n do 
        read(f,a[i,j]);
    
    Result := 0; 
    for i:=r+1 to n-r do 
        for j:=r+1 to n-r do 
        if (sum(i,j)>Result) then 
    begin
        Result := sum(i,j);
        imax   := i;
        jmax   := j;
    end;
    write(i,#32,j,#32,Result);
    readln; 
end.