#include<iostream>
using namespace std;
const int N = 1e5+10;
int h[N],w[N];
int n,m;
bool check(int mid){
int res = 0;
for(int i=0;i<n;i++){
res += (h[i]/mid) * (w[i]/mid);
if(res>=m) return true;
}
return false;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++) scanf("%d%d",&h[i],&w[i]);
int l = 1,r = 1e5;
while(l<r){
int mid = l+r+1>>1;
if(check(mid)) l=mid;
else r=mid-1;
}
printf("%d",r);
}
【No.13】蓝桥杯二分查找|整数二分|实数二分|跳石头|M次方根|分巧克力(C++)
2024-01-28 21:28:01 20 阅读