Submission #952436

#TimeUsernameProblemLanguageResultExecution timeMemory
952436n3rm1nGap (APIO16_gap)C++17
30 / 100
31 ms3596 KiB
#include<bits/stdc++.h>
#include "gap.h"

using namespace std;
const long long MAXN = 2e5 + 10;
long long a[MAXN];
long long findGap(int T, int N)
{
    if(T == 1)
    {
        long long s = 0, t = (long long)(1e18);
        long long mn, mx;
        long long n = N;
        long long filled0 = 0, filled1 = n+1;

        while(filled0 + 1 <= filled1 - 1)
        {

            MinMax(s, t, &mn, &mx);

            if(mn == mx)
            {
                filled0 ++;
                a[filled0] = mn;
                n --;
                break;
            }
            filled0 ++;
            filled1 --;
            n-= 2;
            a[filled0] = mn;
            a[filled1] = mx;

            s = mn + 1;
            t = mx - 1;
        }
        long long ans = -1;
        for (long long i = 2; i <= N; ++ i)
            ans = max(ans, (long long) (a[i] - a[i-1]));
        return ans;
    }
    long long n = N;
    long long s = 0, t = (long long)(1e18);
    long long mn, mx;
    long long range_l = 0, range_r;
    long long l;
    MinMax(s, t, &mn, &mx);
    range_l = mn;
    range_r = mx;
    l = range_r - range_l + 1;
    long long x = l/n;
   // cout << x << endl;
    long long last = range_l, cache = 0;
    int st = last;
    while(last < range_r)
    {
        //cout << last << endl;
        s = last + 1;
        t = last + x + 1;
        //cout << s << " " << t << endl;
        MinMax(s, t, &mn, &mx);
        //cout << mx << "is mx " << endl;
        if(mx != -1 && mx > last)
        {
            if(cache)
            {
               // cout << st << " " << mx << endl;
                return mn - st;

            }
            //cache = 0;

            last = mx;
            st = last;
        }
        else
        {
            cache += x;
            last = last + x;
            //cout << "here " << last << endl;
        }
    }

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