讨论 / 题解
雨凌 2009-09-08 03:51:00
点我顶贴 收藏 删除
program homework;

var sx:array[1..400] of integer;

xh,tt:array[1..20,0..20] of integer;

t:array[1..20,0..1000] of boolean;

zt:array[1..20] of longint;

x,y,i,j,k,l,m,n,z,s,f1,f2,f3:longint;

f:boolean;

begin

read(m,n);

for x:=1 to m*n do

read(sx[x]);

for x:=1 to n do

for y:=1 to m do

read(xh[x,y]);

for x:=1 to n do

for y:=1 to m do

read(tt[x,y]);

for x:=1 to m*n do

begin

for y:=1 to m do

if xh[sx[x],y]<>0 then begin

i:=tt[sx[x],y];

j:=xh[sx[x],y];

xh[sx[x],y]:=0;

break;

end;

for f1:=tt[sx[x],y-1] to 1000 do begin

f:=true;

for f2:=f1+1 to f1+i do

if t[j,f2] then f:=false;

if f then

for f3:=f1+1 to f1+i do

t[j,f3]:=true;

if f then tt[sx[x],y]:=f1+i;

if f then break;

end;

end;

for x:=1 to m do begin

for y:=1000 downto 1 do

if t[x,y] then begin

zt[x]:=y;

break;

end;

end;

i:=0;

for x:=1 to m do

if zt[x]>i then i:=zt[x];

write(i);

end.

查看更多回复
提交回复