感受

思路

#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;
}