哪里导致超时了呢?
悬赏关注
#include<bits/stdc++.h>
using namespace std;
int n,c,x[10009009];
int maxn;
int mid,z,y;
int sum,last;
bool check(int m){
sum=0,last=x[1];
for(int i=2;i<=n;i++){
if(x[i]-last<mid) sum++;
else last=x[i];
if(sum>maxn) return false;
}
return true;
}
int main(){
cin>>n>>c;
for(int i=1;i<=n;i++){
cin>>x[i];
}
maxn=n-c;
sort(x+1,x+n+1);
z=1,y=x[n]-x[1];
while(z<=y){
mid=(z+y)/2;
if(check(mid)) z=mid;
else y=mid;
}
cout<<z<<endl;
return 0;
}
栓Q thanks