Pagini recente » Cod sursa (job #3130862) | Cod sursa (job #2941257) | Cod sursa (job #469670) | Cod sursa (job #1481094) | Cod sursa (job #3261248)
#include <fstream>
#include <algorithm>
#define int long long
using namespace std;
ifstream in("garaj.in");
ofstream out("garaj.out");
int n, m, i, j, st, dr, c[100010], t[100010], g[100010], f, best, sum;
bool checkss(int ts)
{
sum = 0;
for (i = 1; i <= n; i++)
sum += c[i] * (ts / (t[i]*2));
return sum >= m;
}
int32_t main()
{
in >> n >> m;
for (i = 1; i <= n; i++)
in >> c[i] >> t[i];
st = 1, dr = 1e12, best = 0;
while(st <= dr)
{
int mid = (st+dr)>>1;
if (checkss(mid))
{
dr = mid-1;
best = mid;
}
else
st = mid+1;
}
for (i = 1; i<= n; i++)
g[i] = c[i] * (best/(t[i]*2));
sort(g+1, g+1+n, greater<int>());
sum = 0;
for (i = 1; i <= n && sum < m; i++)
{
sum += g[i];
f++;
}
out << best << ' ' << f;
return 0;
}