解題思路:用二分查找,每次更新知足條件的ans便可.ios
#include<iostream> using namespace std; int n,k; int main() { int h[100000],w[100000]; cin>>n>>k; for(int i = 0; i < n; i++) cin>>h[i]>>w[i]; int l = 1, r = 100001; int ans; while(l <= r) { int mid = (l+r)/2; int cnt = 0; for(int j = 0; j < n; j++) { cnt += h[j]/mid * w[j]/mid; } if(cnt >= k) { l = mid + 1; ans = mid; } else { r = mid - 1; } } cout<<ans<<endl; return 0; }