# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1155408 | Sang | Gap (APIO16_gap) | C++20 | 0 ms | 0 KiB |
#include "gap.h"
#include <bits/stdc++.h>
long long max(long long a, long long b){
return (a > b ? a : b);
}
long long cal(long long l, long long r){
if (l == r) return 0;
long long m = (l + r)/2;
long long * mi1, *mx1, *mi2, *mx2;
MinMax(l, m, &mi1, &mx1);
MinMax(m+1, r, &mi2, &mx2);
if (*mi1 == -1 && *mi2 == -1) return 0;
if (*mi1 == -1) return cal(m+1, r);
if (*mi2 == -1) return cal(l, m);
long long ans = (*mi2 - (*mx1));
ans = max(ans, cal(l,m));
ans = max(ans, cal(m+1, r));
return ans;
}
long long findGap(int T, int N)
{
return cal(0, 1e18);
}