Pagini recente » Cod sursa (job #1835321) | Cod sursa (job #302438) | Cod sursa (job #971660) | Cod sursa (job #775144) | Cod sursa (job #1374888)
type sir= array [1..1001] of integer;
var put,cost: sir;
n,p,cost1,cost2,put1,put2: integer;
ok: boolean;
procedure citire(var put,cost: sir; var n,p: integer);
var f: text;
i: integer;
begin
assign(f,'energii.in'); reset(f);
readln(f,n);
readln(f,p);
for i:= 1 to n do readln(f,put[i],cost[i]);
close(f);
end;
function verif: boolean;
var i: integer;
s: qword;
begin
verif:=false;
for i:= 1 to n do
s:= s+put[i];
if s>p then verif:=true;
end;
procedure tip(cost1: integer);
var f: text;
begin
assign(f,'energii.out'); rewrite(f);
writeln(f,cost1);
close(f);
end;
procedure rezolv(var put,cost: sir; var n,p,cost1: integer);
var cost2,put1,put2,i,j: integer;
begin
cost2:=0; put2:=0;
repeat
cost1:=0; put1:=0;
for i:= 1 to n do
if (put[i]>put1) then begin
j:=i;
put1:=put[j];
cost1:=cost[j];
end
else if (put[i]=put1) and (cost[i]<cost1) then begin
j:=i;
put1:=put[j];
cost1:=cost[j];
end;
cost2:=cost2+cost1;
put2:=put2+put1;
put[j]:=-1;
cost[j]:=-1;
until put2>=p;
tip(cost2);
end;
begin{pp}
citire(put,cost,n,p);
ok:=verif;
if not ok then tip(-1) else rezolv(put,cost,n,p,cost1);
end.