163472025-04-28 18:12:40zsomborXorcpp17Wrong answer 30/100200ms860 KiB
#include <iostream>
#include <vector>
using namespace std;
using ll = long long;

ll l, r;
vector <ll> ans;

ll xr(vector <ll> v) {
	return ((v[0] ^ v[1]) ^ v[2]);
}

void upd(vector <ll> v) {
	if (v[0] < l || r < v[2]) return;
	if (xr(v) > xr(ans)) ans = v;
}

void solve() {
	cin >> l >> r;
	ans = { 0, 0, 0 };
	for (ll i = 60; i >= 0; i--) {
		if (r - l < 2) break;
		ll h = (1ll << i);
		if ((l & h) == (r & h)) continue;

		ll m = l + h - l % h;
		upd({ m - 1, m, m + 1 });
		upd({ m - 2, m, m + 1 });

		if (l == m - 1) { l = m; continue; }
		ll a = m - h, b = m;
		for (int j = i - 1; j >= 0; j--) {
			a += (1ll << j);
			if ((l & (1ll << j)) == 0) break;
			b += r & (1ll << j);
		}
		upd({ a - 1, a, b });
		l = m;
	}
	for (int i : ans) cout << i << " ";
	cout << "\n";
}

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	int t;
	cin >> t;
	while (t--) solve();
}
SubtaskSumTestVerdictTimeMemory
base30/100
1Accepted0/01ms316 KiB
2Wrong answer0/024ms316 KiB
3Accepted5/51ms316 KiB
4Accepted5/51ms508 KiB
5Accepted5/51ms316 KiB
6Accepted5/51ms316 KiB
7Accepted5/56ms328 KiB
8Accepted5/510ms456 KiB
9Wrong answer0/516ms492 KiB
10Wrong answer0/524ms464 KiB
11Wrong answer0/548ms544 KiB
12Wrong answer0/550ms464 KiB
13Time limit exceeded0/5101ms568 KiB
14Time limit exceeded0/6153ms860 KiB
15Time limit exceeded0/6200ms796 KiB
16Time limit exceeded0/6200ms800 KiB
17Time limit exceeded0/6185ms820 KiB
18Wrong answer0/727ms316 KiB
19Time limit exceeded0/7186ms776 KiB
20Time limit exceeded0/7200ms848 KiB