help! I got TLE
Here is my program:
program p1115;
const maxn=100; maxm=10;
var
ship:array [1..maxn] of longint;
long:array [1..maxm] of longint;
r:array [1..maxm,0..maxn] of longint;
top:array [1..maxm] of longint;
m,n:longint;
procedure init;
var i:longint;
begin
fillchar(ship,sizeof(ship),0);
fillchar(long,sizeof(long),0);
fillchar(r,sizeof(r),0);
fillchar(top,sizeof(top),0);
readln(n,m);
for i:=1 to n do
readln(ship[i]);
for i:=1 to m do
readln(long[i]);
end;
procedure sout;
var i,j,k:longint;
begin
for i:=1 to m do
begin
j:=1; while (r[i,j]<>0) do inc(j); dec(j);
writeln(j); for k:=1 to j do write(r[i,k],' '); writeln;
end;
end;
procedure sort;
var i,j,t:longint;
begin
for i:=1 to (n-1) do
for j:=(i+1) to n do
if (ship[i]<ship[j]) then
begin
t:=ship[i]; ship[i]:=ship[j]; ship[j]:=t;
end;
end;
procedure solve(dep:longint);
var i:longint;
begin
for i:=1 to m do
if (r[i,0]+ship[dep]<=long[i]) then
begin
inc(top[i]); r[i,top[i]]:=ship[dep]; inc(r[i,0],ship[dep]);
if (dep=n) then begin sout; halt; end else solve(dep+1);
r[i,top[i]]:=0; dec(r[i,0],ship[dep]); dec(top[i]);
end;
end;
begin
init;
sort;
solve(1);
end.