Submission #1160150

#TimeUsernameProblemLanguageResultExecution timeMemory
1160150kirakaminski968Gap (APIO16_gap)C++20
100 / 100
43 ms1864 KiB
#include "gap.h"
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int MAXN = 1e5+5;
const ll INF = 1000000000000000001;
ll arr[MAXN];
ll findGap(int T, int N){
    if(T == 1){
        arr[0] = -1; arr[N+1] = INF;
        for(int i = 1;i<=(N+1)/2;++i){
            ll mn,mx; MinMax(arr[i-1]+1,arr[N-i+2]-1,&mn,&mx);
            arr[i] = mn; arr[N-i+1] = mx;
        }
        ll ans = 0;
        for(int i = 1;i<N;++i){
            ans = max(ans,arr[i+1]-arr[i]);
        }
        return ans;
    }
    else{
        ll mn,mx;
        MinMax(0,INF,&mn,&mx);
        ll b = (mx-mn)/(N-1);
        if((mx-mn)%(N-1) != 0) ++b;
        ll ans = 0;
        ll last = mn;
        for(ll cur = mn;cur < mx;cur += b){
            ll x = min(cur+b-1,mx-1);
            ll curmn, curmx; MinMax(cur,x,&curmn,&curmx);
            ans = max(ans,curmn-last);
            if(curmx > 0) last = curmx;
        }
        ans = max(ans,mx-last);
        return ans;
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...