# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
977849 | Amaarsaa | Gap (APIO16_gap) | C++14 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
//#include "gap.h"
using namespace std;
using ll =long long;
ll a[1000005], n;
void MinMax(ll s, ll t, ll&mn, ll&mx) {
mn = lower_bound(a + 1, a + n + 1, s) - a;
if ( mn == n + 1) {
mn = -1;
mx = -1;
return ;
}
mn = a[mn];
mx = upper_bound(a + 1, a + n + 1, t) - a;
mx --;
mx = a[mx];
}
ll Sub1(ll N) {
ll b[N + 2],ans, lo1, hi1, lo, hi, l, r;
l = 1;
r = N;
lo = 0;
hi = LONG_MAX;
while ( l <= r) {
MinMax(lo, hi, lo1, hi1);
if (lo1 == -1) break;
b[l] = lo1;
b[r] = hi1;
lo = lo1 + 1;
hi = hi1 - 1;
l ++;
r --;
}
ans = 0;
for (int i = 2; i <= N; i ++) {
ans =max(ans, b[i] - b[i - 1]);
}
return ans;
}
ll Sub2(ll N) {
return N;
}
long long findGap(int T, int N) {
if ( T == 1) {
return Sub1(N);
}
else return Sub1(N);
}
ll inp() {
cin >> n;
for (int i = 1; i <= n; i ++) cin >> a[i];
}
int main() {
inp();
cout << findGap(1, n) << endl;
}