Submission #1273515

#TimeUsernameProblemLanguageResultExecution timeMemory
1273515lamlamlamGap (APIO16_gap)C++20
30 / 100
86 ms6820 KiB
#include "gap.h"
#define ll long long
#include <bits/stdc++.h>
using namespace std;
int n;
vector<ll> a;
void sol(ll l,ll r){
    if(l>r or a.size()==n) return;
    ll mx,mn;
    MinMax(l,r,&mn,&mx);
    if(mx==-1) return;
    a.push_back(mn);
    if(mx==mn) return;
    a.push_back(mx);
    l = mn+1; r = mx-1;
    if(l>r or a.size()==n) return;
    sol(l,r);
}
long long findGap(int subtask_num, int N){
    n = N;
    if(subtask_num==1){
        sol(0,1e18);
        sort(a.begin(),a.end());
        ll ans = 0;
        for(int i=0; i<a.size()-1; i++) ans = max(ans,a[i+1]-a[i]);
        return ans;
    }
    ll l,r,mn,mx, t1,t2;
    MinMax(0,1e18,&l,&r);
    ll dist = r-l, mn_dist = dist/(n-1);
    if(dist%(n-1)) mn_dist++;
    ll cur = l;
    while(cur<r){
//        cerr << "CURR: " << cur << endl;
        MinMax(cur+1,cur+mn_dist,&mn,&mx);
        if(mx!=-1) cur = mx;
        else{
            t1 = cur;
            break;
        }
    }
    cur = r;
    while(cur>l){
//        cerr << "CURL: " << cur << endl;
        MinMax(cur-mn_dist,cur-1,&mn,&mx);
        if(mn!=-1) cur = mn;
        else{
            t2 = cur;
            break;
        }
    }
//    cerr << t1 << ' ' << t2 << endl;
    return t2-t1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...