8 条题解

  • 2
    @ 2025-5-16 20:41:02
    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e5+10;
    int l,n,m,r,ans,a[N];
    bool check(int mid){
    	int sum=1;
    	int last=a[1];
    	for(int i=2;i<=n;i++){
    		if(a[i]-last>=mid){
    			sum++;
    			last=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]-a[1];
    	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
    标签
    递交数
    448
    已通过
    118
    上传者