const jin=100000000;
type
c=array[1..10] of longint;
var
s:array[0..100,0..100] of c;
sum:c;
d:array[0..100,0..100] of longint;
i,j,k,n,m:longint;
function max(a,b:c):c;
var t:integer;
begin
for t:=4 downto 1 do
if a[t]>b[t] then exit(a)
else if a[t]<b[t] then exit(b);
exit(a);
end;
function jia(a,b:c):c;
var i,j:longint;
begin
for i:=1 to 3 do
begin
a[i]:=a[i]+b[i];
a[i+1]:=a[i+1]+a[i] div jin;
a[i]:=a[i] mod jin;
end;
a[4]:=a[4]+b[4];exit(a);
end;
function jia2(a:c;b:longint):c;
begin
a[1]:=a[1]+b;
a[2]:=a[2]+a[1] div jin;
a[1]:=a[1] mod jin;
exit(a);
end;
function f(k1,k2:longint):c;
begin
if s[k1,k2,1]>0 then f:=jia(s[k1,k2],s[k1,k2])
else
begin
s[k1,k2]:=max(jia2(f(k1+1,k2),d[k,k1]),jia2(f(k1,k2-1),d[k,k2]));
f:=jia(s[k1,k2],s[k1,k2]);
end;
end;
begin
assign(input,'game.in');reset(input);
readln(n,m);
for i:=1 to n do
begin
for j:=1 to m-1 do read(d[i,j]);readln(d[i,m]);
end;
close(input);
for k:=1 to n do
begin
fillchar(s,sizeof(s),0);
for i:=1 to m do s[i,i,1]:=d[k,i];
sum:=jia(sum,f(1,m));
end;
assign(output,'game.out');rewrite(output);
for i:=4 downto 1 do
if sum[i]>0 then
begin
write(sum[i]);break;
end;
dec(i);
if (i=0) and (sum[1]=0) then write('0');
while i>0 do
begin
if sum[i] div 10=0 then write('0000000')
else if sum[i] div 100=0 then write('000000')
else if sum[i] div 1000=0 then write('00000')
else if sum[i] div 10000=0 then write('0000')
else if sum[i] div 100000=0 then write('000')
else if sum[i] div 1000000=0 then write('00')
else if sum[i] div 10000000=0 then write('0');
write(sum[i]);
dec(i);
end;
writeln;
close(output);
end.
用了大数据测 if s[k1,k2,1]>0 then f:=jia(s[k1,k2],s[k1,k2]) 这句超界了