Pagini recente » Cod sursa (job #999189) | Cod sursa (job #1894255) | Cod sursa (job #1654838) | Cod sursa (job #1522277) | Cod sursa (job #1550415)
#include <fstream>
#include <algorithm>
#include <utility>
#define lint long long int
using namespace std;
const int NMAX = 100005;
int n, m;
struct camion {
int c, t;
lint val;
} v[NMAX];
bool operator<(const camion &a, const camion &b) {
return a.val > b.val;
}
int get_ans(int time) {
for (int i = 1; i <= n; ++ i)
v[i].val = v[i].c * (time / (2 * v[i].t));
sort(v + 1, v + n + 1);
int _m = m;
for (int i = 1; i <= n; ++ i) {
_m -= v[i].val;
if (_m <= 0)
return i;
}
return n + 1;
}
ifstream cin("garaj.in");
ofstream cout("garaj.out");
void read() {
cin >> n >> m;
for (int i = 1; i <= n; ++ i)
cin >> v[i].c >> v[i].t;
}
void solve() {
int st = 1;
int dr = 1000000000;
int mijl;
int ans = dr + 1;
while (st <= dr) {
mijl = (st + dr) / 2;
if (get_ans(mijl) <= n) {
ans = mijl;
dr = mijl - 1;
}
else
st = mijl + 1;
}
cout << ans << ' ' << get_ans(ans) << '\n';
}
int main()
{
read();
solve();
cin.close();
cout.close();
return 0;
}