Submission #1140147

#TimeUsernameProblemLanguageResultExecution timeMemory
1140147andreifilimonSwimming competition (LMIO18_plaukimo_varzybos)C++20
10 / 100
245 ms4328 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...