全部评论 1

  • #include <iostream>
    #include <algorithm>
    using namespace std;
    
    typedef long long ll; 
    const int MAXN = 1e5 + 5;
    int h[MAXN], w[MAXN]; 
    int n, k;
    bool check(int x) {
        ll total = 0;
        for (int i = 0; i < n; i++) {
            total += (ll)(h[i] / x) * (w[i] / x);
            if (total >= k) return true;
        }
        return total >= k;
    }
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(0);
        cin >> n >> k;
        int r = 0;
        for (int i = 0; i < n; i++) {
            cin >> h[i] >> w[i];
            r = max(r, max(h[i], w[i])); 
        }
        
        int l = 1, ans = 0;
        while (l <= r) {
            int mid = (l + r) / 2;
            if (check(mid)) {
                ans = mid; 
                l = mid + 1; 
            } else {
                r = mid - 1; 
            }
        }
        
        cout << ans << endl;
        return 0;
    }
    

    14小时前 来自 北京

    0

热门讨论