Cod sursa(job #203836)

Utilizator katakunaCazacu Alexandru katakuna Data 20 august 2008 11:30:51
Problema Garaj Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<stdio.h>
#include<algorithm>
using namespace std;

struct camion {int c,t;} c[100001];

long long s[100001],sol,nr,mij,i,u,p;
int n,k;

long long trans(int x){
long long R=0;

  for(i=1;i<=n;i++)
  R+=c[i].c * (x/(c[i].t*2));

return R;
}

int main(){

FILE *f=fopen("garaj.in","r");
FILE *g=fopen("garaj.out","w");

fscanf(f,"%d %d",&n,&k);

  for(i=1;i<=n;i++)
  fscanf(f,"%d %d",&c[i].c,&c[i].t);

p=1;
u=k*c[1].t/c[1].c;
sol=u*2;
nr=1;

   while(p<=u){
   mij=(p+u)/2;

     if(trans(mij)>=k){
     sol=mij;
     u=mij-1;
     }

     else
     p=mij+1;

   }

    for(i=1;i<=n;i++)
    s[i]+=c[i].c * (sol/(c[i].t*2));

sort(s+1,s+1+n);
long long R=0;
nr=0;

  for(i=n;i>=1;i--){
  R+=s[i];
  nr++;
    if(R>=k)
    break;
  }

fprintf(g,"%lld %lld",sol,nr);

fclose(f);
fclose(g);

return 0;
}