Pagini recente » Cod sursa (job #2526091) | Cod sursa (job #1523312) | Rating Ilinca Sebastian-Ionut (seby_me14) | Cod sursa (job #2850008) | Cod sursa (job #982079)
Cod sursa(job #982079)
#include <cstdio>
#include <cstdlib>
using namespace std;
struct camion {
int c,t;
};
camion cam[100010];
int sol;
int compar (const void *p, const void *q)
{
camion x=*(camion*)p,y=*(camion*)q;
if((sol/x.t)*x.c<(sol/y.t)*y.c)
return 1;
if(((sol/x.t)*x.c)>(sol/y.t)*y.c)
return -1;
return 0;
}
int main()
{
freopen("garaj.in","r",stdin);
freopen("garaj.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;
qsort(cam+1,n,sizeof(cam[0]),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;
}