Cod sursa(job #315571)

Utilizator funkydvdIancu David Traian funkydvd Data 16 mai 2009 12:08:23
Problema Garaj Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#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()
{
long long 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;
}