Pagini recente » Cod sursa (job #1170801) | Cod sursa (job #1108013) | Cod sursa (job #3263182) | Cod sursa (job #2840016) | Cod sursa (job #522667)
Cod sursa(job #522667)
Program energi;
Type cn=record
nr:integer;
en:integer;
cst:integer;
end;
Var Gen:array[1..1001] of cn;
ST:array[0..1000] of integer;
min,I,P,G,W:integer;
F,FF:text;
function Valid(p:integer):boolean;
var i,j:integer;
Begin
Valid:=true;
For i:=1 to p-1 do
IF St[p]=St[i] then valid:=false;
end;
Function Final(p:integer):boolean;
var energie,i,j:integer;
Begin
energie:=0;
Final:=false;
For i:=1 to p do
energie:=energie+Gen[St[i]].en;
IF energie>=W then
Final:=true;
End;
Procedure vrf_cost_min(p:integer);
var cost,i,j:integer;
Begin
cost:=0;
For i:=1 to p do
cost:=cost+Gen[St[i]].cst;
IF cost<min then min:=cost;
End;
Procedure bktr(p:integer);
var Q:integer;
begin
For Q:=St[p-1]+1 to G Do
Begin
St[p]:=Q;
IF valid(p) then
IF final(p) then
vrf_cost_min(p)
else
Bktr(p+1);
End;
End;
Begin
min:=maxint;
Assign(F,'energii.in'); Reset(F);
Assign(FF,'energii.out'); Rewrite(FF);
Readln(F,G);
Read(F,W);
For I:=1 to G do
Readln(F,Gen[i].en,Gen[i].cst);
Close(F);
Bktr(1);
Write(FF,min);
close(FF);
end.