Submission #742900

#TimeUsernameProblemLanguageResultExecution timeMemory
742900vjudge1Gap (APIO16_gap)C++17
53.51 / 100
60 ms1204 KiB
#include <bits/stdc++.h>

#include "gap.h"

using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
#define ent "\n"

const int maxn = 1e6 + 100;
const ll INF = (1ll<<61);
const int MOD = 1e9 + 7;
const int inf = (1<<30);
const int maxl = 20;
const int P = 31;

ll findGap(int t, int n){
    if(t == 1){
        ll l = -1;
        ll r = 1e18 + 1;
        ll ans = 0;
        int cnt = (n+1)/2;
        while(cnt > 0){
            cnt--;
            ll tl, tr;
            if(l + 1 > r - 1) break;
            MinMax(l + 1, r - 1, &tl, &tr);
            if(tl == -1) break;
            if(l != -1){
                ans = max(ans, tl - l);
                ans = max(ans, r - tr);
            }
            l = tl;
            r = tr;
        }
        if(l < r) ans = max(ans, r - l);
        return ans;
    } else{
        ll mn, mx, ans = 0;
        MinMax(0, 1e18, &mn, &mx);
        ll d = (mx - mn) / (n - 1);
        ll x = (mx - mn) % (n - 1);
        ll p = -1;
        for(ll i = mn; i <= mx;){
            ll r = i + d + bool(x--);
            ll tl, tr; MinMax(i, r - 1, &tl, &tr);
            if(tr != -1){
                if(p != -1) ans = max(ans, tl - p);
                p = tr;
            }
            i = r;
        }
        return ans;
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...