Pagini recente » Cod sursa (job #2293182) | Cod sursa (job #387750) | Cod sursa (job #2890990) | Cod sursa (job #813739) | Cod sursa (job #3261092)
#include <fstream>
#include <vector>
#include <algorithm>
#define int long long
using namespace std;
ifstream cin("garaj.in");
ofstream cout("garaj.out");
struct ceva{
int c,t;
}v[100001];
int i,n,s;
bool verif(long long t){
long long bottles = 0;
for(i=1;i<=n;i++)
bottles+=v[i].c*(t/v[i].t);
return bottles>=s;
}
int32_t main()
{
cin>>n>>s;
for(i=1;i<=n;i++)
cin>>v[i].c>>v[i].t,v[i].t = 2*v[i].t;
long long st=0,dr=1e18;
while(st+1<dr)
{
long long mid=(st+dr)>>1;
if(!verif(mid))
st=mid;
else
dr=mid;
}
int timp = dr;
vector<int>vec;
for(i=1;i<=n;i++)
vec.push_back(v[i].c*(timp/v[i].t));
sort(vec.begin(),vec.end());
reverse(vec.begin(),vec.end());
int nrcamioane=0;
for(int h=0;h<vec.size()&&s>0;h++)
{
nrcamioane++;
s-=vec[h];
}
cout<<timp<<" "<<nrcamioane;
return 0;
}