# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1147804 | njoop | Gap (APIO16_gap) | C++17 | 0 ms | 0 KiB |
#include "gap.h"
#include <bits/stdc++.h>
#define int long long
using namespace std;
int mx, mn, l, r;
vector<int> arr;
int findAns() {
int ans = 0;
sort(arr.begin(), arr.end());
for(int i=0; i<arr.size()-1; i++) {
ans = max(ans, arr[i+1]-arr[i]);
}
return ans;
}
int findGap(int T, int N) {
l=0; r=1e18;
if(T == 1) {
for(int i=1; i<=N/2; i++) {
MinMax(l, r, &mn, &mx);
if(mn == -1 || mx == -1) {
break;
}
arr.push_back(mn);
arr.push_back(mx);
l = mn+1;
r = mx-1;
}
if(N%2 == 1) {
MinMax(l, r, &mn, &mx);
arr.push_back(mn);
}
return findAns();
}
MinMax(l, r, &mn, &mx);
l = mn;
r = mx;
arr.push_back(mn);
arr.push_back(mx);
int in = (r-l)/(N-1) + (r-l)%(N-1);
for(int j=l+1; j<r; j+=in+1) {
MinMax(j, j+in, &mn, &mx);
if(mn != -1 && mx != -1) {
arr.push_back(mn);
arr.push_back(mx);
}
}
return findAns();
}