#includeusing namespace std; const int N = 100010; int h[N], w[N]; int n, k; bool check(int mid) { int res = 0; for (int i = 0; i < n; i ++) res += (h[i] / mid) * (w[i] / mid); // 数学公式推导 if (res >= k) return true; else return false; } int main() { cin >> n >> k; for (int i = 0; i < n; i ++) cin >> h[i] >> w[i]; int l = 0, r = N; while (l < r) { int mid = l + r + 1 >> 1; // 注意是套用第二个模板 if (check(mid)) // 如果mid这个值符合条件 l = mid; else r = mid - 1; } cout << l << endl; }



