Submission #2134159


Source Code Expand

#include <iostream>
#include <algorithm>
using namespace std;
int n, a[100009], s[1048588], p[1048588];
int main() {
	cin >> n;
	for (int i = 0; i < n; i++) cin >> a[i + 1], a[i + 1] ^= a[i];
	for (int i = 0; i < 1 << 20; i++) p[i] = -1;
	for (int i = n; i >= 0; i--) s[a[i] + 1]++, p[a[i]] = i;
	for (int i = 0; i < 1 << 20; i++) s[i + 1] += s[i];
	int res = -1, l = -1, r = -1;
	for (int i = 0; i <= n; i++) {
		int val = 0;
		for (int j = 19; j >= 0; j--) {
			if (s[((a[i] ^ val ^ (1 << j)) & ((1 << 20) - (1 << j))) + (1 << j)] - s[(a[i] ^ val ^ (1 << j)) & ((1 << 20) - (1 << j))]) val |= 1 << j;
		}
		if (val > res) {
			res = val;
			l = i;
			r = p[a[i] ^ val];
		}
	}
	if (res == 0) cout << 0 << ' ' << 1 << ' ' << 1 << endl;
	else cout << res << ' ' << l + 1 << ' ' << r << endl;
	return 0;
}

Submission Info

Submission Time
Task F - Maximum Segment XOR
User square1001
Language C++14 (Clang 3.8.0)
Score 100
Code Size 829 Byte
Status AC
Exec Time 102 ms
Memory 8832 KB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 31
Set Name Test Cases
All 1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 3, 30, 31, 4, 5, 6, 7, 8, 9
Case Name Status Exec Time Memory
1 AC 4 ms 8448 KB
10 AC 5 ms 8448 KB
11 AC 5 ms 8448 KB
12 AC 4 ms 8448 KB
13 AC 10 ms 8448 KB
14 AC 12 ms 8448 KB
15 AC 12 ms 8448 KB
16 AC 55 ms 8704 KB
17 AC 34 ms 8576 KB
18 AC 101 ms 8832 KB
19 AC 4 ms 8448 KB
2 AC 4 ms 8448 KB
20 AC 4 ms 8448 KB
21 AC 4 ms 8448 KB
22 AC 4 ms 8448 KB
23 AC 4 ms 8448 KB
24 AC 4 ms 8448 KB
25 AC 7 ms 8448 KB
26 AC 5 ms 8448 KB
27 AC 11 ms 8448 KB
28 AC 70 ms 8704 KB
29 AC 77 ms 8704 KB
3 AC 4 ms 8448 KB
30 AC 49 ms 8576 KB
31 AC 102 ms 8832 KB
4 AC 4 ms 8448 KB
5 AC 4 ms 8448 KB
6 AC 4 ms 8448 KB
7 AC 4 ms 8448 KB
8 AC 4 ms 8448 KB
9 AC 5 ms 8448 KB