Submission #515645

#TimeUsernameProblemLanguageResultExecution timeMemory
515645Aldas25Gap (APIO16_gap)C++14
100 / 100
58 ms1888 KiB
#include "gap.h"
#include<bits/stdc++.h>

using namespace std;

#define FAST_IO ios_base::sync_with_stdio(0); cin.tie(nullptr)
#define FOR(i, a, b) for(int i = (a); i <= (b); i++)
#define REP(n) FOR(i, 1, (n))
#define f first
#define s second
#define pb push_back
typedef long long ll;

const int MAXN = 100100;
const ll INF = 1e18;

ll a[MAXN];

long long findGap(int T, int n)
{
    if (T == 1) {
        int le = 2, ri = n-1;
        //a[0] = -1, a[n+1] = INF;
        MinMax(0, INF, &a[1], &a[n]);

        int m = 0;

        while (le <= ri) {
            MinMax(a[le-1]+1, a[ri+1]-1, &a[le], &a[ri]);
            m++;

            le++;
            ri--;
        }

        ll ans = 0;
        FOR(i, 1, n-1) {
            ans = max(ans, a[i+1] - a[i]);
        }

        return ans;

    } else {
        ll mn, mx;
        MinMax(0, INF, &mn, &mx);

        ll x = (mx-mn + n - 2) / (n - 1);
        x++;
        ll ans = x-1;
        ll lst = mn;
        ll i;
        for (i = mn; i + x < mx; i += x) {
            ll le, ri;
            MinMax(i, min(i + x - 1, mx), &le, &ri);
            if (le != -1) {
                ans = max(ans, le - lst);
                lst = ri;
            }
        }
        ll le,ri;
        MinMax(i, mx, &le, &ri);
        if(le!= -1) ans=max(ans, le-lst);

        return ans;
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...