Pagini recente » Cod sursa (job #1243126) | Cod sursa (job #3123769) | Cod sursa (job #5037) | Cod sursa (job #2134455) | Cod sursa (job #354461)
Cod sursa(job #354461)
#include<fstream>
#include<stdlib.h>
using namespace std;
ifstream f1 ("garaj.in");
ofstream f2 ("garaj.out");
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;
f1>>n>>m;
for (i=1; i<=n; i++) {f1>>a>>b; cam[i].c=a; cam[i].t=b*2;}
for (log=1; log<=100000; log<<=1);
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;
f2<<sol<<" "<<i-1;
return 0;
}