#include #pragma GCC target("avx2") #define rep(i, a, b) for (ll i = (a); i < (b); i++) #define all(x) (x).begin(), (x).end() #define sz(x) (ll)size(x) using namespace std; using ll = long long; using vi = vector; using vvi = vector; using pii = pair; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); void solve() { auto start = chrono::steady_clock::now(); ll n, w; cin >> n >> w; vector mills(n); for (auto& [x, y] : mills) { cin >> x >> y; } cout << setprecision(9) << fixed; double lo = 0, hi = 1e10; while (chrono::steady_clock::now() - start < chrono::milliseconds(250)) { double mid = (lo + hi) / 2; double kgsprocessed = 0; for (auto [p, t] : mills) { kgsprocessed += max(0., mid - 2 * t) * p; } (kgsprocessed >= w ? hi : lo) = mid; } cout << lo << endl; } int main() { cin.tie(0)->sync_with_stdio(0); cin.exceptions(cin.failbit); solve(); return 0; }