#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);
ll cur = l;
int cnt = 2;
// cerr << dist << ' ' << mn_dist << endl;
while(cur<r){
// cerr << "CURR: " << cur << endl;
MinMax(cur+1,cur+mn_dist,&mn,&mx);
if(mx!=-1) cur = mx, cnt++;
else{
t1 = cur;
break;
}
}
if(cur==r) return mn_dist;
cur = r;
while(cur>l){
// cerr << "CURL: " << cur << endl;
MinMax(cur-mn_dist,cur-1,&mn,&mx);
if(mn!=-1) cur = mn, cnt++;
else{
t2 = cur;
break;
}
}
assert(n==cnt);
// cerr << t1 << ' ' << t2 << endl;
return t2-t1;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |