Pagini recente » Cod sursa (job #958259) | Cod sursa (job #946664) | Cod sursa (job #2137446) | Cod sursa (job #322512) | Cod sursa (job #1744643)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("garaj.in");
ofstream cout("garaj.out");
const int MAXN = 100000;
int n, m;
int c[1 + MAXN], t[1 + MAXN], v[1 + MAXN];
bool Check(long long moment) {
int i, sum = 0;
for (int i = 1; i <= n; i++) {
sum += c[i] * (moment / t[i]);
if (sum >= m)
return true;
}
return false;
}
int main() {
cin >> n >> m;
for (int i = 1; i <= n; i++)
cin >> c[i] >> t[i];
long long left = 1, right = 1000000000001LL;
while (left <= right) {
long long middle = (left + right) / 2;
if (Check(middle))
right = middle - 1;
else
left = middle + 1;
}
cout << 2 * left << " ";
for (int i = 1; i <= n; i++)
v[i] = c[i] * (left / t[i]);
sort(v + 1, v + n + 1);
int sum = 0, i;
for (i = n; i; i--) {
sum += v[i];
if (sum >= m)
break;
}
cout << n - i + 1;
return 0;
}