Submission #1273560

#TimeUsernameProblemLanguageResultExecution timeMemory
1273560lamlamlamGap (APIO16_gap)C++20
100 / 100
42 ms6704 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=-1,t2=-1;
    MinMax(0,1e18,&l,&r);
    ll dist = r-l, mn_dist = dist/(n-1);
    a.push_back(l);
    a.push_back(r);
    ll cur = l;
//    cerr << dist << ' ' << mn_dist << endl;
    while(cur<r){
//        cerr << "CURR: " << cur << endl;
        MinMax(cur+1,cur+mn_dist+1,&mn,&mx);
        if(mx!=-1){
            a.push_back(mn);
            if(mn!=mx) a.push_back(mx);
        }
        cur += mn_dist+1;
    }
    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;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...