#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
const int Nmax = 1e6 + 5;
int v[Nmax];
int n, a, b;
bool ok(int dif)
{
int st = 1, dr = 1;
//cout << dif << ": " << '\n';
while(dr <= n)
{
if(v[dr] - v[st] > dif)
{
if(dr - st + 1 < a)
return false;
st = dr;
}
if(dr - st + 1 == b)
st = dr;
//cout << st << " " << dr << '\n';
dr ++;
}
dr --;
if(dr - st + 1 < a || v[dr] - v[st] > dif)
return false;
return true;
}
int main()
{
int i, st, dr, mid, ans = 0;
cin >> n >> a >> b;
for(i = 1; i <= n; i ++)
cin >> v[i];
sort(v + 1, v + n + 1);
st = 1; dr = v[n] - v[1];
while(st <= dr)
{
mid = (st + dr) / 2;//dif maxima
if(ok(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... |