返回题解分享
讨论 / 题解分享/ 帖子详情

冶炼金属(编程题) - 题解

#include <bits/stdc++.h>
#define int long long
using namespace std;

const int N = 1e4 + 10;
int a[N], b[N];
int n;

bool check1(int u)
{
    for(int i = 0; i < n; i ++ )
    {
        if(a[i] / u > b[i])
            return 0;
    }
    return 1;
}

bool check2(int u)
{
    for(int i = 0; i < n; i ++ ) {
        if(a[i] / u < b[i])
            return 0;
    }
    return 1;
}

signed main()
{
    cin >> n;
    for(int i = 0; i < n; i ++ ) cin >> a[i] >> b[i];

    int l = 0, r = 1e9;
    while(l < r) {
        int mid = (l + r) >> 1;
        if(check1(mid)) r = mid;
        else l = mid + 1;
    }
    cout << l << " ";
    r = 1e9;
    while(l < r) {
        int mid = (l + r + 1) >> 1;
        if(check2(mid)) l = mid;
        else r = mid - 1;
    }
    cout << l;
}
0 回复 0 转发 3 喜欢 1 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!