Submission #712717

#TimeUsernameProblemLanguageResultExecution timeMemory
712717hoainiemGap (APIO16_gap)C++14
100 / 100
61 ms1900 KiB
#include "gap.h"
#include <bits/stdc++.h>
#define nmax 100008
const long long inf = 1e18;
using namespace std;
long long ans = -1, a[nmax];
long long findGap(int T, int n)
{
    if (T == 1){
        a[0] = -1;
        a[n + 1] = inf;
        a[n + 1] += 8;
        for (int i = 1, j = n; i <= j; i++, j--){
            if (i < j)
                MinMax(a[i - 1] + 1, a[j + 1] - 1, &a[i], &a[j]);
            else
                MinMax(a[i - 1] + 1, a[j + 1] - 1, &a[i], &a[n + 2]);
        }

        for (int i = 1; i < n; i++)
            ans = max(ans, a[i + 1] - a[i]);
    }
    else{
        long long u, v, blk, x, y, pre;
        MinMax(0, inf + 8, &u, &v);
        blk = (v - u) / (n - 1) + 1;
        pre = u;
        if (n == 2)
            return v - u;
        for (long long l = u + 1, r = u + 1 + blk; l < v; l += blk, r += blk){
            if (r >= v)
                r = v;
            if (l >= r)
                break;
            MinMax(l, r - 1, &x, &y);
            if (x == -1 && y == -1)
                continue;
            ans = max(ans, x - pre);
            pre = y;
        }
        ans = max(ans, v - pre);
    }
	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...