You have a small mistake....
You have a table [1..100,1..10,1..2] while you should have [1..10,1..100,1..2]
If you change it you will have Accepted...
Good Luck

Moderator: Board moderators
Code: Select all
[/pascal]
program od_nowaaaa;
var
t:array[1..10,1..110] of longint;
k:array[1..10,1..110,1..2] of longint;
i1,min,pom,n,m,i,j,a:longint;
wynik,posrednik:array[1..110] of longint;
procedure prepare;
begin
for i:=1 to n do
for j:=1 to m do begin
k[i,j,1]:=2147483647;
k[i,j,2]:=15;
end;
end;
begin
while not eof do begin
readln(n,m);
prepare;
i:=1;j:=0;
while (i<>n) or (j<>m) do begin
while not eoln do begin
read(a);
inc(j);
if j > m then begin
inc(i);
j:=1;
end;
t[i,j]:=a;
end;
readln;
end;
for i:=1 to n do
k[i,1,1]:=t[i,1];
for j:=1 to m-1 do
for i:=1 to n do begin
pom:=i-1;
if pom=0 then pom:=n;
if k[pom,j+1,1] > k[i,j,1]+t[pom,j+1] then begin
k[pom,j+1,1]:=k[i,j,1]+t[pom,j+1] ;
k[pom,j+1,2]:=i;
end
else
if (k[pom,j+1,1] = k[i,j,1]+t[pom,j+1]) and (k[pom,j+1,2] > i) then
k[pom,j+1,2]:=i;
pom:=i;
if k[pom,j+1,1] > k[i,j,1]+t[pom,j+1] then begin
k[pom,j+1,1]:=k[i,j,1]+t[pom,j+1] ;
k[pom,j+1,2]:=i;
end
else
if (k[pom,j+1,1] = k[i,j,1]+t[pom,j+1]) and (k[pom,j+1,2] > i) then
k[pom,j+1,2]:=i;
pom:=i+1;
if pom > n then pom:=1;
if k[pom,j+1,1] > k[i,j,1]+t[pom,j+1] then begin
k[pom,j+1,1]:=k[i,j,1]+t[pom,j+1] ;
k[pom,j+1,2]:=i;
end
else
if (k[pom,j+1,1] = k[i,j,1]+t[pom,j+1]) and (k[pom,j+1,2] > i) then
k[pom,j+1,2]:=i;
end;
min:=2147483647 ;
for i:=1 to 105 do wynik[i]:=11;
for i:=1 to n do
if k[i,m,1] < min then min:=k[i,m,1] ;
for i:=1 to n do
if k[i,m,1] = min then begin
i1:=i;
posrednik[m+1]:=i;
for pom:=m downto 1 do begin
posrednik[pom]:=k[i1,pom,2];
i1:=k[i1,pom,2];
end;
i1:=m+2;
while wynik[i1]= posrednik[i1] do dec(i1);
if wynik[i1] > posrednik[i1] then
for i1:=1 to m+2 do
wynik[i1]:=posrednik[i1];
end;
for i:=2 to m do
write(wynik[i],' ');
write(wynik[m+1]);
writeln;
writeln(min);
for i:=1 to 105 do posrednik[i]:=11;
end;
end.