Cod sursa(job #983861)

Utilizator stefan.friptuPetru Stefan Friptu stefan.friptu Data 12 august 2013 20:53:33
Problema Garaj Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<cstdio>
#include<algorithm>
using namespace std;
 
struct camion {int c,t;} c[100001];
 
long long sol,mij,i,u,p;
long long n,k;
int s[100001];
 
long long trans(long long x){
long long R=0;
 
  for(i=1;i<=n;i++)
  R+=c[i].c * (x/(c[i].t*2));
 
return R;
}
 
int main(){
 
freopen("garaj.in","r",stdin);
freopen("garaj.out","w",stdout);
 
scanf("%d %d",&n,&k);
 
  for(i=1;i<=n;i++)
  scanf("%lld %lld",&c[i].c,&c[i].t);
 
p=1;
u=k*c[1].t/c[1].c;
sol=u*2;
 
 
   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);
 
int R=0;
int nr=0;
 
  for(i=n;i>=1;i--){
  R+=s[i];
  nr++;
    if(R>=k)
    break;
  }
 
printf("%lld %d",sol,nr);
 

return 0;
}