program batoh1;
{ Co udela tento program? Jak a proc funguje?
  Odpovezte na tyto otazky a okomentujte kód. }
var celkem,pPredmetu,i:integer;
	predmety:array[1..1000] of integer;
function rekurze(cPredmetu, zbyva : integer):integer;
begin
	if (zbyva = 0) then rekurze:=1
	else if (zbyva < 0) or (cPredmetu <= 0) then rekurze:=0
	else
		rekurze := rekurze(cPredmetu-1, zbyva) + rekurze(cPredmetu-1, zbyva - predmety[cPredmetu]);
end;
begin
	read(celkem,pPredmetu);
	for i:=1 to pPredmetu do
		read(predmety[i]);
	writeln(rekurze(pPredmetu,celkem));
end.
Kdo byste našel v nějakém z těchto programů chybu, dejte mi to vědět - můžete tak získat bonusové body (1 chyba ≈ 5 bodů). ;)