Submission #882382

#TimeUsernameProblemLanguageResultExecution timeMemory
882382dubabubaGap (APIO16_gap)C++14
0 / 100
15 ms5700 KiB
#include "gap.h"
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
#define ff first
#define ss second

struct node {
	node *LC, *RC;
	ll tl, tr;
	ll mn, mx;
	ll ans;

	node(ll l, ll r) {
		ans = -1;
		tl = l, tr = r;
		MinMax(l, r, &mn, &mx);
	}

	bool birth() {
		if(tl == tr) return 0;
		if(mn == mx) return 0;
		LC = new node(tl, (tl + tr) / 2);
		RC = new node((tl + tr) / 2 + 1, tr);
		return 1;
	}

	void build() {
		if(tl == tr) return;
		if(mn == mx) return;

		LC-> build();
		RC-> build();

		ans = max(LC-> ans, RC-> ans);
		if(LC-> mx != -1 && RC-> mn != -1)
			ans = max(ans, RC-> mn - LC-> mx);
	}
};

ll findGap(int T, int N) {
	const ll mxn = (ll)1e18 + 10;
	node *root = new node(0LL, mxn);
	root-> build();
	return root-> ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...