cpp
#include<iostream>
using namespace std;
const int N =1e5 + 10;
int h[N] = {0},w[N] = {0};
int n,k;
bool check(int mid){
int ans = 0; // ans 统计蛋糕以mid为边长 可以划分的数量
for(int i = 0;i < n;i++){
ans += (h[i] / mid) * (w[i] / mid);
if(ans >= k) return true;
}
return false;
}
int main(){
ios::sync_with_stdio(0),cin.tie(0);
cin >> n >> k;
for(int i = 0;i < n;i++) cin >> h[i] >> w[i];
int l = 1,r = 1e5; // 蛋糕最大的边长为右边界
while(l < r){
int mid = l + r + 1 >> 1;
if(check(mid)) l = mid; // 如果mid可以满足 还可以增加
else r = mid - 1;
}
cout << l << endl;
return 0;
}