var
m,n,t,i,j,k,sj,s:longint;
a:array[1..10000,1..3] of longint;
procedure swap(var a,b:longint);
var t:integer;
begin
t:=a;a:=b;b:=t;
end;
procedure qsort(l,r: longint);
var
i,j,x,y: longint;
begin
i:=l;
j:=r;
x:=a[(l+r) div 2,3];
repeat
while a[i,3]>x do
inc(i);
while x>a[j,3] do
dec(j);
if not(i>j) then
begin
swap(a[i,1],a[j,1]);
swap(a[i,2],a[j,2]);
swap(a[i,3],a[j,3]);
inc(i);
dec(j);
end;
until i>j;
if l<j then
qsort(l,j);
if i<r then
qsort(i,r);
end;
begin
k:=0;
readln(m,n,t);
for i:=1 to m do
for j:=1 to n do
begin
read(s);
if s>0 then begin
inc(k);
a[k,1]:=i;
a[k,2]:=j;
a[k,3]:=s;
end;
end;
qsort(1,k);
sj:=a[1,1]+1;
s:=a[1,3];
i:=1;
while sj+a[i,1]<=t do
begin
inc(i);
sj:=sj+abs(a[i,1]-a[i-1,1])+abs(a[i,2]-a[i-1,2])+1;
s:=s+a[i,3];
if sj+a[i,1]>=t then break;
end;
if sj+a[i,1]>t then writeln(s-a[i,3])
else writeln(s);
end.
这个是照思路写的..AC了
但是很不解 为什么要从大的花生的点开始
我自己模拟了一个测试
4 4 9
0 0 49 49
0 0 0 0
0 0 0 0
0 50 0 0
这个答案应该是98吧??运行程序确实50
这个为什么能AC??