163472025-04-28 18:12:40zsomborXorcpp17Hibás válasz 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();
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base30/100
1Elfogadva0/01ms316 KiB
2Hibás válasz0/024ms316 KiB
3Elfogadva5/51ms316 KiB
4Elfogadva5/51ms508 KiB
5Elfogadva5/51ms316 KiB
6Elfogadva5/51ms316 KiB
7Elfogadva5/56ms328 KiB
8Elfogadva5/510ms456 KiB
9Hibás válasz0/516ms492 KiB
10Hibás válasz0/524ms464 KiB
11Hibás válasz0/548ms544 KiB
12Hibás válasz0/550ms464 KiB
13Időlimit túllépés0/5101ms568 KiB
14Időlimit túllépés0/6153ms860 KiB
15Időlimit túllépés0/6200ms796 KiB
16Időlimit túllépés0/6200ms800 KiB
17Időlimit túllépés0/6185ms820 KiB
18Hibás válasz0/727ms316 KiB
19Időlimit túllépés0/7186ms776 KiB
20Időlimit túllépés0/7200ms848 KiB