Submission #143135

#TimeUsernameProblemLanguageResultExecution timeMemory
143135alextodoranGap (APIO16_gap)C++14
30 / 100
1606 ms2100 KiB
#include <bits/stdc++.h>

#define ll long long
#define N_MAX 100002

using namespace std;

const ll INF = 1000000000000000000;

void MinMax(long long s, long long t, long long *mn, long long *mx);

ll a[N_MAX];

ll mi, mx;

ll findGap (int t, int n)
{
    if(t == 1)
    {
        a[0] = -1;
        a[n + 1] = INF + 1;
        int x = 1, y = n;
        while(x <= y)
        {
            MinMax(a[x - 1] + 1, a[y + 1] - 1, &mi, &mx);
            a[x] = mi;
            a[y] = mx;
            x++;
            y--;
        }
    }
    else
    {
        a[0] = -1;
        for(int i = 1; i <= n; i++)
        {
            ll l = a[i - 1] + 1, r = INF;
            while(l < r)
            {
                ll mid = (l + r) / 2;
                MinMax(l, mid, &mi, &mx);
                if(mi == -1)
                    l = mid + 1;
                else
                    r = mid;
            }
            a[i] = l;
        }
    }
    ll ans = 0;
    for(int i = 2; i <= n; i++)
        ans = max(ans, a[i] - a[i - 1]);
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...