Submission #557940

#TimeUsernameProblemLanguageResultExecution timeMemory
557940Ai7081Gap (APIO16_gap)C++17
100 / 100
64 ms7432 KiB
#include "gap.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long

const ll inf = 1e18;

vector<ll> v;

long long findGap(int T, int N)
{
    ll ans = 0;
    if (T==1) {
        v.assign(N, -1);
        ll *mi = new ll, *ma = new ll;
        MinMax((ll)1, inf, mi, ma);
        v[0] = *mi, v[N-1] = *ma;
        for (int i=1; i<=(N-1)/2; i++) {
            MinMax(*mi+1, *ma-1, mi, ma);
            v[i] = *mi, v[N-1-i] = *ma;
        }
        for (int i=0; i<N-1; i++) ans = max(ans, v[i+1] - v[i]);
    }
    else if (T==2) {
        ll *allmin = new ll, *allmax = new ll;
        MinMax((ll)1, inf, allmin, allmax);
        ll gap = (*allmax - *allmin + N-2) / (N-1);
        ll now = *allmin+1, last = *allmin;
        while (now < *allmax) {
            ll *mi = new ll, *ma = new ll;
            MinMax(now, now+gap, mi, ma);
            if (*mi != -1) ans = max(ans, *mi - last);
            if (*ma != -1) last = *ma;
            now = now+gap+1;
        }
    }
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...