Pagini recente » Cod sursa (job #1689481) | Cod sursa (job #2201928) | Cod sursa (job #823098) | Cod sursa (job #1673754) | Cod sursa (job #1014351)
#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=(1<<31)-1,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;
}