本文最后更新于 1163 天前,其中的信息可能已经有所发展或是发生改变。
#include<iostream>
using namespace std;
int arr[100005][2];
int n,k;
bool judge(int m){
int count=0;
for(int i=0;i<n;i++){
count+=((arr[i][0]/m)*(arr[i][1]/m));
if(count>=k){
return true;
}
}
return false;
}
int main(){
int MAX=0,MIN=1;
cin>>n>>k;
for(int i=0;i<n;i++){
cin>>arr[i][0]>>arr[i][1];
if(arr[i][0]>MAX){
MAX=arr[i][0];
}
if(arr[i][1]>MAX){
MAX=arr[i][1];
}
}
MAX++;
while(MAX-MIN>1){
cout<<"MAX"<<MAX<<"MIN"<<MIN<<endl;
int MID=(MAX+MIN)/2;
if(judge(MID)){
MIN=MID;
}else{
MAX=MID;
}
cout<<"+-----MAX"<<MAX<<"MIN"<<MIN<<endl;
}
cout<<MIN;
return 0;
}
Post Views: 189