#include <bits/stdc++.h>
using namespace std;
#define iloop(x, n) for (long long i = x; i < n; ++i)
#define jloop(x, n) for (long long j = x; j < n; ++j)
#define kloop(x, n) for (long long k = x; k < n; ++k)
#define dloop(x, n) for (long long d = x; d >= n; --d)
#define ll long long
#define pll pair<long long, long long>
#define pii pair<int, int>
#define iii tuple<int, int, int>
#define vi vector<int>
#define mp make_pair
#define pb push_back
#define f first
#define s second
#define int long long
#define endl '\n'
#define g0(a) get<0>(a)
#define g1(a) get<1>(a)
#define g2(a) get<2>(a)
#define g3(a) get<3>(a)
#define dg(x) cout << #x << ": " << x << endl
#define all(x) x.begin(), x.end()
#define FASTIO               \
    ios::sync_with_stdio(false); \
	cin.tie(0);              \
    cout.tie(0);
int n, w; 
int snx[2005], lnx[2005];
int mem[2005][2005];
vi v;
int dp(int pos, int num){ // min amount of large cameras needed to cover events pos onwards(inclusive) with num small cameras
	if (pos >= n) {
		return 0;
	}
	if (mem[pos][num] != -1) {
		return mem[pos][num];
	}
	int ret;
	if (num == 0){
		ret  = dp(lnx[pos], num) + 1;
	}
	else ret = min(dp(lnx[pos], num) + 1, dp(snx[pos], num-1));
	return mem[pos][num] = ret;
}
int32_t main(){
	FASTIO
	int p, q; cin >> n >> p >> q;
	v.resize(n); iloop(0, n) cin >> v[i];
	sort(all(v));
	if (p + q >= n) {
		cout << 1;
		return 0;
	}
	int l = 1, r = 1000000000, m, ans = -1;
	while (l <= r){
		m = (l + r)/2;
		iloop(0,2005) jloop(0, 2005) mem[i][j] = -1;
		iloop(0, n){
			auto it = lower_bound(all(v), v[i] + m), big = lower_bound(all(v), v[i] + 2 * m);
			int itn = n, bign = n;
			if (it != v.end()) itn = it - v.begin();
			if (big != v.end()) bign = big - v.begin();
			snx[i] = itn, lnx[i] = bign;
		}
		/*iloop(0, n) cout << snx[i] << " ";
		cout << endl;
		iloop(0, n) cout << lnx[i] << " ";
		cout << endl;*/
		int res = dp(0, p);
		//dg(m);dg(res);cout << endl << endl;
		if (res <= q){
			ans = m;
			r = m -1;
		}
		else {
			l = m + 1;
		}
	}
	cout << ans;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |