Pagini recente » Cod sursa (job #574499) | Cod sursa (job #2357904) | Cod sursa (job #1059827) | Cod sursa (job #1423536) | Cod sursa (job #982073)
Cod sursa(job #982073)
#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std;
struct camion {
int c,t;
};
camion cam[100010];
int sol;
int compar (camion a, camion b)
{
if((sol/a.t)*a.c<(sol/b.t)*b.c)
return 1;
if((sol/a.t)*a.c>(sol/b.t)*b.c)
return -1;
return 0;
}
int main()
{
freopen("camion.in","r",stdin);
freopen("camion.out","w",stdout);
int n,m,a,b,i,st,dr,k,nr;
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++){
scanf("%d%d",&a,&b);
cam[i].c=a;
cam[i].t=b*2;
}
st=1;
dr=22500;
while(st<=dr)
{
k=(st+dr)/2;
nr=0;
for(i=1;i<=n;i++)
nr+=(k/cam[i].t)*cam[i].c;
if(nr>=m)
{
sol=k;
dr=k-1;
}
else
st=k+1;
}
nr=0;
sort(cam+1,cam+n+1,compar);
for(i=1;i<=n && nr<m;i++)
nr+=(sol/cam[i].t)*cam[i].c;
printf("%d %d\n",sol,i-1);
return 0;
}