제출 #515638

#제출 시각아이디문제언어결과실행 시간메모리
515638Aldas25Gap (APIO16_gap)C++14
30 / 100
91 ms1856 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+1 + n - 1) / (n - 1);
        ll ans = x;
        ll lst = mn;

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

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