Pagini recente » Cod sursa (job #1723404) | Cod sursa (job #503466) | Cod sursa (job #1538445) | Cod sursa (job #1703879) | Cod sursa (job #222836)
Cod sursa(job #222836)
type vec=array[0..100010]of integer;
var f,g:text;
a,b,r:int64;
c,t:vec;
v:array[0..100010]of int64;
n,m,i,k:longint;
function verif(k:int64):boolean;
var s:int64;
i:longint;
begin
s:=0;
i:=1;
while (s<m)and(i<=n)do
begin
s:=s+(k div (2*t[i]))*c[i];
inc(i);
end;
if (s>=m)then verif:=true else verif:=false;
end;
function search(a,b:int64):int64;
var k,r:int64;
begin
while (a<=b)do
begin
k:=(a+b)div 2;
if (verif(k))then
begin
r:=k;
b:=k-1;
end else a:=k+1;
end;
search:=r;
end;
procedure quick(l,r:longint);
var i,j,x:longint;
aux:int64;
begin
i:=l;
j:=r;
x:=v[(i+j)div 2];
repeat
while (v[i]>x)do inc(i);
while (v[j]<x)do dec(j);
if (i<=j)then
begin
aux:=v[i];
v[i]:=v[j];
v[j]:=aux;
inc(i);
dec(j);
end;
until i>j;
if (l<j)then quick(l,j);
if (i<r)then quick(i,r);
end;
begin
assign(f,'garaj.in');
assign(g,'garaj.out');
reset(f);
rewrite(g);
read(f,n,m);
a:=1000;
for i:=1 to n do
begin
read(f,c[i],t[i]);
if (m mod c[i]=0)then k:=0 else k:=1;
if ((m div c[i]+k)*t[i]>b)then b:=t[i]*(m div c[i]+k);
if (t[i]<a)then a:=t[i];
end;
r:=search(a,2*b);
for i:=1 to n do
v[i]:=(r div (2*t[i]))*c[i];
quick(1,n);
a:=0;
i:=1;
while (a<=m)and(i<=n)do
begin
inc(a,v[i]);
inc(i);
end;
write(g,r,' ',i-1);
close(f);
close(g);
end.