Pagini recente » Cod sursa (job #1148839) | Cod sursa (job #867448) | Cod sursa (job #524019) | Cod sursa (job #1005798) | Cod sursa (job #146364)
Cod sursa(job #146364)
#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(long li,long ls)
{
long i=li,j=ls,t=1;
long 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(long li,long 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=3655000;
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;
ls=tmax-1;
}
else
li=tmax+1;
}
qsort(1,n);
S=0;
i=0;
while(S<m)
{
i++;
S+=cost[i];
}
printf("%lld %lld\n",tmin,i);
return 0;
}