1 条题解

  • 1
    @ 2023-10-16 19:59:13

    C++ :

    #include <bits/stdc++.h>
    
    using namespace std;
    int a[1000010];
    int n,c,t;
    bool check(int x){
        int s=0;
        int k=a[1];
        for(int i=2;i<=n;i++)
        {
            if(a[i]-k<x)s++;
            else k=a[i];
            if(s>t)return false;
        }
        return true;
    }
    int main(){ 
    	cin>>n>>c;
        for(int i=1;i<=n;i++){
        	cin>>a[i];
    	}
        sort(a+1,a+n+1);
        t=n-c;
        int left=1;
        int right=a[n]-a[1];
        while(left+1<right){
            int mid=(left+right)/2;
            if(check(mid))left=mid;
            else right=mid;
        }
        if(check(right))cout<<right<<endl;
        else cout<<left<<endl;
        return 0;
    }
    
    • 1

    信息

    ID
    757
    时间
    1000ms
    内存
    128MiB
    难度
    2
    标签
    递交数
    42
    已通过
    24
    上传者