Pagini recente » Cod sursa (job #455447) | Cod sursa (job #1960299) | Cod sursa (job #2468999) | Cod sursa (job #733199) | Cod sursa (job #354488)
Cod sursa(job #354488)
#include<stdio.h>
#include<stdlib.h>
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()
{
long long n,m,a,b,i,j,k,nr,lg,log;
freopen ("garaj.in", "r", stdin);
freopen ("garaj.out", "w", stdout);
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;}
log=8388608;
for (lg=log, i=log; lg; lg>>=1)
{
nr=0;
if (i>lg) for (j=1; j<=n; j++) nr+=(i-lg)/cam[j].t*cam[j].c;
if (i-lg>0 && nr>=m) i-=lg;
}
sol=i;
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", sol, i-1);
return 0;
}