Pagini recente » Cod sursa (job #106846) | Cod sursa (job #2521244) | Cod sursa (job #1020438) | Cod sursa (job #699432) | Cod sursa (job #315570)
Cod sursa(job #315570)
#include<fstream>
#include<stdlib.h>
using namespace std;
ifstream f1 ("garaj.in");
ofstream f2 ("garaj.out");
struct camion{ int c,t;};
camion cam[100001];
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()
{
int n,m,a,b,i,j,st,dr,k,nr;
f1>>n>>m;
for (i=1; i<=n; i++) {f1>>a>>b; cam[i].c=a; cam[i].t=b*2;}
st=1;
dr=22542;
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;
f2<<sol<<" "<<i-1;
return 0;
}