Cod sursa(job #1014349)

Utilizator RaduGabriel2012Dinu Radu RaduGabriel2012 Data 22 octombrie 2013 16:05:44
Problema Garaj Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("garaj.in");
ofstream g("garaj.out");
int n,tot,c[100005],t[100005],take[100005],mtime;
int Ok(int time)
{ int i; long long res=0;
  for(i=1;i<=n;i++)
    res+=1LL*(time/t[i])*c[i];
 return res>tot;
}
void Search()
{ int l=1,r=1000005,m;
   while(l<r)
   { m=(l+r)/2;
     if (Ok(m)) r=m; else l=m+1;
   }
 mtime=l;
}
void Rebuild()
{ int i,res,sol;
  for(i=1;i<=n;i++)
   take[i]=(mtime/t[i])*c[i];
  sort(take+1,take+n+1);
   i=n; sol=0;
   while(tot>0)
   { tot-=take[i];
      i--; sol++;
   }
 g<<sol;
}
int main()
{ int i;
    f>>n>>tot;

   for(i=1;i<=n;i++)
    {f>>c[i]>>t[i];
     t[i]*=2;}

  Search();
   g<<mtime<<" ";
  Rebuild();
    return 0;
}