Pagini recente » Cod sursa (job #2329546) | Cod sursa (job #129339) | Cod sursa (job #1794503) | Cod sursa (job #1790882) | Cod sursa (job #140599)
Cod sursa(job #140599)
#include<stdio.h>
long long i,j,n,m,tmax,S,li,ls,tmin;
long long cost[100001],co[100001];
int cant[100001],t[100001];
long poz(int li,int ls)
{
long i=li,j=ls,t=1;
long aux;
while(i<j)
{
if(cost[i]<cost[j])
{
aux=cost[i];
cost[i]=cost[j];
cost[j]=aux;
t=1-t;
}
if(t)
i++;
else
j--;
}
return i;
}
void qsort(int li,int ls)
{
long p;
if(li<ls)
{
p=poz(li,ls);
qsort(li,p-1);
qsort(p+1,ls);
}
}
int main(void)
{
freopen("garaj.in","r",stdin);
freopen("garaj.out","w",stdout);
scanf("%lld%lld",&n,&m);
for(i=1;i<=n;i++)
scanf("%d%d",&cant[i],&t[i]);
li=0;
ls=10000000;
while(li<ls)
{
S=0;
tmax=(li+ls)/2;
for(i=1;i<=n;i++)
{
co[i]=tmax/(2*t[i])*cant[i];
S+=co[i];
}
if(S>=m)
{
for(i=1;i<=n;i++)
cost[i]=co[i];
tmin=tmax;
}
if(S<m)
li=tmax+1;
else
ls=tmax-1;
}
qsort(1,n);
S=0;
i=0;
while(S<m)
{
i++;
S+=cost[i];
}
printf("%lld %lld\n",tmin,i);
return 0;
}