C++ 一本通 分治 网线主管

题目 -

代码


#include<iostream>
#include<cstdio>
using namespace std;
int n,k,xmin=1e8;
double a[1000001];
int check(int mid)
{
    int ck=0;
    for(int i=0;i<n;i++)
    {
        if(a[i]<mid)
        {
            return 1;
        }
        ck+=a[i]/mid;
    }
    if(ck<k)
    {
        return 0;
    }
    else
    {
        return 1;
    }
}
int main()
{
    int l,r;
    cin>>n>>k;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
        a[i]*=100;
        xmin=(xmin>a[i]?a[i]:xmin);
    }
    l=1;
    r=xmin;
    int mid;
    while(l<=r)
    {
        mid=(l+r)/2;
        if(check(mid)==1)
        {
            l=mid+1;
        }
        else
        {
            r=mid-1;
        }
    }
    if(r<100)cout<<"0.00";
    else printf("%.2lf",r*1.0/100);
    return 0;
}

问题 - 出现了7个答案错误
位于3 4 9 10 11 12 13点