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 |
|
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 |