#include <bits/stdc++.h>
using namespace std;
int n, a, b;;
vector<int> v;
bool isValid(int d)
{
int i = 0;
while(i < n)
{
int endd = i + a - 1;
if(endd >= n || v[endd] - v[i] > d) return false;
int j = endd;
while(j + 1 < n && j + 1 < i + b && v[j + 1] - v[i] <= d)
j++;
i = j + 1;
}
return true;
}
int main()
{
cin >> n >> a >> b;
v.resize(n);
for(int i = 0; i < n; i++)
cin >> v[i];
sort(v.begin(), v.end());
int st, dr, mid, ans;
st = 0, dr = ans = v[n - 1] - v[0];
while(st <= dr)
{
mid = (st + dr) / 2;
if(isValid(mid))
{
ans = mid;
dr = mid - 1;
}
else
{
st = mid + 1;
}
}
cout << ans;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |