Submission #145971


Source Code Expand

#include <iostream>
#include <queue>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <cmath>
#include <ctime>
using namespace std;


struct T{
	T *p[2];
	T(){p[0]=p[1]=NULL;}
};

void add(T *root,vector<int> v){
	for(int i = 0 ; i < v.size() ; i++){
		if( root->p[v[i]] == NULL ) root->p[v[i]] = new T();
		root = root->p[v[i]];
	}
}

vector<int> C(int x){
	vector<int> v;
	for(int j = 20 ; j >= 0 ; j--) v.push_back(x >> j & 1);
	return v;
}

int main(){
	int n;
	cin >> n;
	vector<int> inp(n);
	for(int i = 0 ; i < n ; i++) cin >> inp[i];
	reverse(inp.begin(),inp.end());
	T *root = new T();
	int cur = 0;
	int ans = -1;
	int pos = -1;
	for(int i = 0 ; i < n ; i++){
		add(root,C(cur));
		int x = inp[i];
		vector<int> vv = C(~(cur^x));
		T *now = root;
		int get = 0;
		for(int j = 0 ; j < vv.size() ; j++){
			if( now->p[vv[j]] == NULL ){
				get = get * 2 + (!vv[j]);
				now = now->p[!vv[j]];
			}else{
				get = get * 2 + vv[j];
				now = now->p[vv[j]];
			}
		}
		if( ans <= ((cur^x) ^ get) ){
			ans = (cur^x) ^ get;
			pos = i;
		}
		cur ^= x;
	}
	int test = 0;
	for(int i = pos ; i >= 0 ; i--){
		test ^= inp[i];
		if( test == ans ){
			cout << test << " " << n - pos << " " << n - i << endl;
			return 0;
		}
	}
	
	cout << -1 << endl;
	
	
}

Submission Info

Submission Time
Task F - Maximum Segment XOR
User kyuridenamida
Language C++ (GCC 4.4.7)
Score 100
Code Size 1362 Byte
Status AC
Exec Time 327 ms
Memory 17032 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 213 ms 1928 KB
10 AC 52 ms 2168 KB
11 AC 45 ms 2184 KB
12 AC 42 ms 2060 KB
13 AC 61 ms 3592 KB
14 AC 68 ms 3844 KB
15 AC 69 ms 4228 KB
16 AC 195 ms 8460 KB
17 AC 130 ms 8328 KB
18 AC 327 ms 17032 KB
19 AC 45 ms 1924 KB
2 AC 44 ms 1932 KB
20 AC 43 ms 1928 KB
21 AC 43 ms 1928 KB
22 AC 46 ms 1916 KB
23 AC 44 ms 1924 KB
24 AC 45 ms 1924 KB
25 AC 52 ms 2304 KB
26 AC 98 ms 2052 KB
27 AC 63 ms 2564 KB
28 AC 238 ms 11140 KB
29 AC 258 ms 11916 KB
3 AC 42 ms 1924 KB
30 AC 165 ms 8712 KB
31 AC 317 ms 12544 KB
4 AC 45 ms 1924 KB
5 AC 47 ms 1932 KB
6 AC 44 ms 1924 KB
7 AC 44 ms 1928 KB
8 AC 43 ms 1928 KB
9 AC 46 ms 2052 KB