#include <bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,k,h[N],w[N];
bool check(int x)
{
int num=0;
for(int i=0;i<n;++i)
{
num += (w[i] / x) * (h[i] / x);
}
if(num>k)
return true;
else
return false;
}
int main(){
cin >> n >> k;
for(int i=0;i<n;++i)
{
scanf("%d %d",&h[i],&w[i]);
}
int l=1,r=100000;
int mid;
while(l<r)
{
mid=(l+r+1)/2;
if (check(mid)) l = mid;
else r = mid - 1;
}
cout << l;
return 0;
}
上面的边界有问题,测试10 10的时候结果是5