Submission #1140124

#TimeUsernameProblemLanguageResultExecution timeMemory
1140124andreifilimonSwimming competition (LMIO18_plaukimo_varzybos)C++20
0 / 100
0 ms324 KiB
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

bool is_valid(int n, const vector<int>& v, int max_diff, int a, int b)
{
    int g = 0, gstart = 0;
    for(int i = 0; i < n; ++i)
    {
        if(v[i] - v[gstart] > max_diff)
        {
            if(i - gstart < a) return false;
            g++;
            gstart = i;
        }
    }
    if(n - gstart < a) return false;
    g++;

    return g <= (n + b - 1) / b;
}

int main()
{
    int n, a, b;
    cin >> n >> a >> b;
    vector<int> v(n);
    for(int i = 0; i < n; i++)
        cin >> v[i];

    sort(v.begin(), v.end());

    int st, dr, ans;
    st = 0, dr = ans = v[n - 1] - v[0];
    while(st <= dr)
    {
        int mid = st + (dr - st) / 2;

        if(is_valid(n, v, mid, a, b))
        {
            ans = mid;
            dr = mid - 1;
        }
        else
        {
            st = mid + 1;
        }
    }
    cout << ans << "\n";
    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...