P8647 题解
题目传送门
因为这道题中
那么二分答案行不行呢,我们通过观察发现答案具有单调性,我们就可以使用二分答案。所有可能的边长为
对于第
\text{code}
#include<iostream>
using namespace std;
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
int n,k,a[100010],b[100010];
int check(int x){
int ans=0;
for(int i=0;i<n;i++) ans+=(a[i]/x)*(b[i]/x);
return ans>=k;
}
int main(){
IOS;
cin>>n>>k;
for(int i=0;i<n;i++) cin>>a[i]>>b[i];
int l=1,r=100000;
while(l<r){
int mid=(l+r+1)>>1;
if(check(mid)) l=mid;
else r=mid-1;
}
cout<<l;
}