7 条题解

  • 0
    @ 2024-6-2 18:01:15
    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e5+10;
    int n,m,a[N],l,r,ans;
    bool check(int mid){
    	int sum=1,l=a[1];
    	for(int i=2;i<=n;i++){
    		if(a[i]>=l+mid){
    			sum++;
    			l=a[i];
    		}
    	}
    	return sum>=m;
    }
    int main(){
    	cin>>n>>m;
    	for(int i=1;i<=n;i++){
    		cin>>a[i];
    	}
    	sort(a+1,a+n+1);
    	l=1;
    	r=a[n];
    	while(l<=r){
    		int mid=l+r>>1;
    		if(check(mid)){
    			ans=mid;
    			l=mid+1;
    		}else{
    			r=mid-1;
    		}
    	}
    	cout<<ans;
        return 0;
    }
    
    

    信息

    ID
    357
    时间
    1000ms
    内存
    512MiB
    难度
    7
    标签
    递交数
    404
    已通过
    100
    上传者