二分查找代码模板
//二分查找,左闭右闭写法
while(l<=r)
{
int mid=l+(r-l)/2;
if(a[mid]<x)
{
l=mid+1;
}else if(a[mid]>x){
r=mid-1;
}else{
cout <<mid;
}
}
#include<bits/stdc++.h>
#define endl '\n'
#define int long long
using namespace std;
vector<int> h,w;
bool check(int n,int k)
{
int cnt=0;
for(int i=0;i<h.size();i++)
{
cnt+=(h[i]/n)*(w[i]/n);
}
return cnt>=k;
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int n,k;cin>>n>>k;
for(int i=0;i<n;i++)
{
int x,y;cin>>x>>y;
h.push_back(x);
w.push_back(y);
}
int l=1,r=1e5;
//二分查找,左闭右闭写法
while(l<=r)
{
int mid=l+(r-l)/2;
if(check(mid,k))
{
l=mid+1;
}else{
r=mid-1;
}
}
cout <<r;
return 0;
}