Pagini recente » Cod sursa (job #831237) | Cod sursa (job #2969661) | Cod sursa (job #60966) | Cod sursa (job #488136) | Cod sursa (job #130981)
Cod sursa(job #130981)
program exer;
type c=record
e:longint;
c:longint;
end;
var g,w,cp:integer;
min,ele:longint;
a:array[1..1002] of c;
b:array[1..1002] of c;
{----------------------------}
procedure load;
var i:integer;
f:text;
begin
assign(f,'energii.in');
reset(f);
readln(f,g);readln(f,w);
for i:=1 to g do
begin
read(f,a[i].e,a[i].c);
readln(f);
end;
close(f);
end;
{----------------------------}
{----------------------------}
procedure uick(s,d:integer);
var j,i,x:integer;
q:c;
begin
i:=s;j:=d;x:=a[(s+d) div 2].c;
repeat
while a[i].c<x do i:=i+1;
while a[j].c>x do j:=j-1;
if i<=j then
begin
q:=a[j];
a[j]:=a[i];
a[i]:=q;
i:=i+1;
j:=j-1;
end;
until i>j;
if s<j then uick(s,j);
if d>i then uick(i,d);
end;
{----------------------------}
{----------------------------}
procedure generate;
var i:integer;
begin
for i:=1 to g do b[i]:=a[i];
end;
{----------------------------}
{----------------------------}
procedure posibil(x:integer);
var i:integer;
begin
for i:=x+1 to g do
begin
b[i].e:=b[i].e+a[x].e;
b[i].c:=b[i].c+a[x].c;
end;
end;
{----------------------------}
{----------------------------}
function verify(x:integer):boolean;
var i:integer;
f:boolean;
begin
f:=false;
for i:=x+1 to g do
if (b[i].e>=w) and (min>b[i].e) then
begin
min:=b[i].e;
cp:=i;
f:=true;
end;
verify:=f;
end;
{----------------------------}
{----------------------------}
procedure solve;
var i:integer;
begin
for i:=1 to g do
begin
posibil(i);
if verify(i) then begin ele:=b[cp].c; break; end;
end;
end;
{----------------------------}
{----------------------------}
procedure elementar;
var i:integer;
f:text;
begin
assign(f,'energii.out');
rewrite(f);
for i:=1 to g do
if a[i].e=w then if a[i].c<ele then ele:=a[i].c;
writeln(f,ele);
close(f);
end;
{----------------------------}
begin
min:=2100000000;
ele:=2100000000;
load;
uick(1,g);
generate;
solve;
elementar;
end.