Cod sursa(job #522667)

Utilizator sharky12592Sireanu Roland sharky12592 Data 15 ianuarie 2011 20:40:44
Problema Energii Scor 15
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.11 kb
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.