Eu zic asa.
1. sortam vectorul descrescator
2. pornim de la 1 pana la n si incercam sa "cumplam" elementul i cu multimea cu suma maxima (ne uitam la tot ce se afla inaintea lui i) de pana acum.
That's it!
Pentru ca nu am fost tocmai explicita.. ar veni ceva de genul:
{initializari etc etc}
for i:=1 to n do
multime[i]:=i;
for i:=1 to n do
begin
max:=0;
pozmax:=0;
for j:=1 to i-1 do
if (max<suma[j]) and (suma[j]+v[i]<=volCamion) then
begin
max:=suma[j];
pozmax:=j;
end;
end;
{si-acuma, daca e cazul, facem uniunea de multimi. scuzati-ma dar am cam multa treaba in seara asta si recunosc, mi-e si cam lene sa scriu}
[/code]