1 条题解

  • 3
    @ 2026-7-26 15:45:49

    我是题解

    #include<bits/stdc++.h>
    using namespace std;
    #define int unsigned long long
    int a[11451454],n,k,l,r;
    bool check(int o){
    	int t=1,f=0;
    	f=a[1];
    	for(int i=2;i<=n;i++){
    		if(a[i]-f>o){
    			t++;
    			f=a[i];
    			//cout<<f<<" ";
    			if(t==k){
    				//cout<<endl;
    				return 0;
    			}
    		}
    	}
    	//cout<<endl;
    	return 1;
    }
    signed main(){
        cin>>n>>k;
        for(int i=1;i<=n;i++){
        	cin>>a[i];
        	r+=a[i];
    	}
        l=0;r*=2;
        sort(a+1,a+n+1);
        while(r-l>1){
        	int m=(r+l)/2;
        	//cout<<r<<"   "<<l<<endl<<endl;
        	if(check(m))r=m;
    		else l=m;
    	}
    	//cout<<r<<"   "<<l<<endl<<endl;
    	cout<<r;
    }
    
    • 1

    信息

    ID
    23
    时间
    1000ms
    内存
    512MiB
    难度
    10
    标签
    递交数
    6
    已通过
    4
    上传者