感受
思路
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
vector<ll> pos;
int n, num;
ll v;
bool check(ll R){
if(R < 0) return false;
ll c = pos[0]; int res = num - 1;
while(true){
auto it = upper_bound(pos.begin(), pos.end(), c + 2 * R);
if(it == pos.end()) return true;
if(!res) break;
c = *it; res--;
}
return false;;
}
int main(){
scanf("%d%d", &n, &num);
for(int i = 1; i <= n; i++){
scanf("%lld", &v);
pos.push_back(v);
}
sort(pos.begin(), pos.end());
ll l, r, mid;
l = -1; r = 1e9;
while(r - l > 1){
mid = (l + r) / 2;
if(check(mid)){
r = mid;
}
else{
l = mid;
}
}
printf("%lld\n", r);
return 0;
}



京公网安备 11010502036488号