Pagini recente » Cod sursa (job #2480460) | Cod sursa (job #2989975) | Cod sursa (job #1090303) | Cod sursa (job #1655720) | Cod sursa (job #1116461)
#include <fstream>
#include <algorithm>
#include <cstring>
#define ll long long
using namespace std;
ifstream fin("garaj.in");
ofstream fout("garaj.out");
int c[100001],t[100001];
ll many[100001],keep[100001];
int n,m;
bool check (long long val)
{
long long s = 0;
for (int i=1; i<=n; ++i)
{
many[i] = val/(2*t[i])*c[i];
s += many[i];
}
if (s >= m)
{
memcpy (keep,many,sizeof(many));
return 1;
}
return 0;
}
int main()
{
fin>>n>>m;
for (int i=1; i<=n; ++i)
{
fin>>c[i]>>t[i];
}
ll lo = 0, hi = (1LL*m/c[1] + 1)*2*t[1];
while (hi - lo > 1)
{
ll mid = (lo + hi)/2;
if (check (mid))
hi = mid;
else lo = mid;
}
fout<<hi<<" ";
sort (keep+1,keep+n+1);
long long s=0;
int i = n;
for (; s < m; --i)
s += keep[i];
fout<<n-i;
}