Cod sursa(job #189807)
Utilizator | Data | 18 mai 2008 14:20:02 | |
---|---|---|---|
Problema | Combinari | Scor | 100 |
Compilator | fpc | Status | done |
Runda | Arhiva educationala | Marime | 1.59 kb |
program aaa;
type stiva=array[1..20] of byte;
var x:stiva;
n,t:byte;
f,g:text;
procedure afisare(k:byte);
var i:integer;
begin
for i:=1 to k do write(g,x[i],' ');
writeln(g);
end;
function conti(k:byte):boolean;
var ok:boolean;
i:byte;
begin
ok:=true;
for i:=1 to k-1 do if x[i]=x[k] then begin
ok:=false;
break;
end;
conti:=ok;
end;
procedure back(var x:stiva;n:byte;t:byte);
var k:integer;caut,tz:boolean;
begin
k:=1;
x[k]:=0;
while k>0 do begin
{caut o val buna}
caut:=false;tz:=false;
while (not caut) and (x[k]<t) do begin
x[k]:=x[k]+1;
if conti(k) then begin
if k=n then begin
afisare(k);
tz:=true;
end
else caut:=true;
end;
end;
if (not caut)and(not tz) then k:=k-1
else begin
k:=k+1;
x[k]:=x[k-1];
end;
end;
end;
begin
assign(f,'combinari.in');
assign(g,'combinari.out');
reset(f);
rewrite(g);
read(f,t,n);
back(x,n,t);
close(g);
end.