题解好像有问题
查看原帖
题解好像有问题
808654
FIGFUH001楼主2023/7/10 19:13
#include<bits/stdc++.h>
using namespace std;
long long n,c,a[100010];
bool check(int x){
    int last=a[1],p=0;
    for(int i=2;i<=n;i++){
		if(a[i]-last<x){
	    p++;
		}
		else{
	    last=a[i];
		}
    }//二分处理
    return p<=n-c;//因为要选出除了不满意的奶牛之外的其它奶牛,因此这里是n-c
}
int main(){
    cin>>n>>c;
    long long l=0,r=0;
    for(int i=1;i<=n;i++){
		cin>>a[i];
		r=max(r,a[i]);
    }
    sort(a+1,a+n+1);
    while(l+1<r){
		long long mid=l+(r-l)/2;
		if(check(mid)){
	    		l=mid;
		}
		else{
	    		r=mid;
		}
    }
    cout<<l;
    return 0;
}

pidan(题解作者)

2023/7/10 19:13
加载中...