4956. 冶炼金属
作者:
logos--
,
2023-08-02 15:56:15
,
所有人可见
,
阅读 96
#include <bits/stdc++.h>
using namespace std;
#define int long long
constexpr int N = 1e4 + 7, M = 11;
constexpr int inf = 1E18, mod = 1e9 + 7;
int n;
pair<int, int> a[N];
inline bool cheak(int x) {
bool ok = false;
for (int i = 1; i <= n; i ++) {
if(a[i].first / x < a[i].second) {
ok = true;
break;
}
}
if(!ok) return true;
else return false;
}
inline bool cheak1(int x) {
bool ok = false;
for (int i = 1; i <= n; i ++) {
if(a[i].first / x > a[i].second) {
ok = true;
break;
}
}
if(!ok) return true;
else return false;
}
inline void Main() {
cin >> n;
int mx = 0;
for (int i = 1; i <= n; i ++) {
cin >> a[i].first >> a[i].second;
mx = max(mx, a[i].first);
}
int l = 1, r = mx;
while(l < r) {
int mid = l + r >> 1;
if(cheak1(mid)) r = mid;
else l = mid + 1;
}
int ll = 1, rr = mx;
while(ll < rr) {
int mid = ll + rr + 1 >> 1;
if(cheak(mid)) ll = mid;
else rr = mid - 1;
}
cout << r << " " << ll << '\n';
}
signed main() {
cin.tie(nullptr)->sync_with_stdio(false);
int T = 1;
while(T --) Main();
return 0;
}