#include <iostream>
#define M 100005
using namespace std;
// (w/x) * (h/x)
// x 1~100000
int arr[M][2];
int N, K;// 巧克力 人数
int x;
bool check(int x) {//尺寸
int sum = 0;
for (int i = 0; i < N; i++) { // 统计 所有合法巧克力总数
sum += (arr[i][0] / x) * (arr[i][1] / x);
}
return sum >= K;
}
void fun() {
int left, right,mid;//尺寸
left = 0;
right = M;
while (left <= right) {
mid = (left + right) / 2;
if (check(mid)) {//合理
x = max(x, mid);
left = mid + 1;
}
else {//
right = mid - 1;
}
}
}
int main() {
cin >> N >> K;
for (int i = 0; i < N; i++) {
cin>>arr[i][0] >>arr[i][1] ;
}
fun();
cout << x;
return 0;
}
分巧克力-二分-蓝桥杯-中等
于 2025-02-08 09:29:03 首次发布