自认为和题解大差不差,但是只有36分,求调。
#include<bits/stdc++.h>
#define int long long
#define map lis
using namespace std;
int n,k;
int map[100100][5];
int l=1,r=n+20;
int maxn=-1;
bool check(int x){
int s=0;
for(int i=1;i<=n;i++){
int a,b;
a=map[i][1]/x;
b=map[i][2]/x;
s+=a*b;
}
if(s>=k) return true;
return false;
}
signed main(){
cin>>n>>k;
for(int i=1;i<=n;i++) cin>>map[i][1]>>map[i][2];
while(l<r){
int mid=(l+r+1)/2;
if(check(mid)){
l=mid;
}
else{
r=mid-1;
}
}
cout<<l;
return 0;
}