最后两个测试点超时,求帮助
查看原帖
最后两个测试点超时,求帮助
1677197
luck219楼主2025/8/3 22:35
#include<iostream>
using namespace std;

int n, k,m,ans=0;
int h[100005], w[100005];
bool check(int mid)
{
    int cnt = 0;
    for (int i = 0; i <= n;i++)
    {
        int a = h[i] / mid;
        int b = w[i] / mid;
        cnt += (a * b);
    }
        if (cnt >= k)
        {
            return 1;
        }
    return 0;
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cin >> n >> k;
    for(int i=1;i<=n;i++)
    {
        
        cin >> h[i] >> w[i];
        m = max(h[i], w[i]);
        int l = 1, r = m, mid = 0;
        while (l <= r)
        {
            mid = (l + r) / 2;
            if (check(mid))
            {
                ans = mid;
                l = mid + 1;
            }
            else
                r = mid - 1;
        }
    }
    cout << ans;
    return 0;
}
2025/8/3 22:35
加载中...