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.