Submission #101908
Source Code Expand
#include <cstdio>
#include <vector>
#include <map>
#include <set>
#include <algorithm>
#define rep(i, n) for(int i = 0; i < (n); ++i)
#define mp make_pair
#define all(v) (v).begin(), (v).end()
using namespace std;
typedef pair<int,int> P;
typedef pair<int,P> Q;
const int MX = 100005, n20 = 1<<20;
int a[MX];
int ans, as, at;
int t[MX*20][2], ti, o[MX*20];
void add(int x, int no){
int v = 0;
for(int i = 19; i >= 0; i--){
int y = (x>>i&1);
if(t[v][y] == -1){
t[v][y] = ti;
v = ti++;
o[v] = no;
t[v][0] = -1;
t[v][1] = -1;
} else {
v = t[v][y];
}
}
}
void sch(int x, int no){
int v = 0, s = x;
for(int i = 19; i >= 0; i--){
int y = !(x>>i&1);
if(t[v][y] != -1 && o[t[v][y]] <= no){
v = t[v][y];
s ^= (y<<i);
} else if(t[v][y^1] != -1 && o[t[v][y^1]] <= no){
v = t[v][y^1];
s ^= ((y^1)<<i);
} else {
if(x >= ans){
ans = x;
as = 1; at = no+1;
return;
}
}
}
if(s > ans || (s==ans && o[v]+1 <= as)){
ans = s;
as = o[v]+1; at = no+1;
}
}
int main(){
int n;
scanf("%d",&n);
int sum = 0;
t[ti][0] = -1;
t[ti++][1] = -1;
ans = -1;
rep(i,n){
scanf("%d",&a[i]);
add(sum,i);
sum ^= a[i];
}
for(int i = n-1; i >= 0; i--){
sch(sum,i);
sum ^= a[i];
}
printf("%d %d %d\n", ans, as, at);
return 0;
}
Submission Info
Submission Time
2013-09-21 11:44:03+0900
Task
F - Maximum Segment XOR
User
nikyaudo
Language
C++ (G++ 4.6.4)
Score
100
Code Size
1681 Byte
Status
AC
Exec Time
97 ms
Memory
6364 KB
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:62:16: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
./Main.cpp:69:26: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
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
20 ms
800 KB
10
AC
20 ms
800 KB
11
AC
20 ms
764 KB
12
AC
20 ms
672 KB
13
AC
24 ms
1440 KB
14
AC
25 ms
1320 KB
15
AC
25 ms
1572 KB
16
AC
58 ms
3228 KB
17
AC
38 ms
3108 KB
18
AC
97 ms
6364 KB
19
AC
20 ms
796 KB
2
AC
20 ms
704 KB
20
AC
20 ms
704 KB
21
AC
19 ms
752 KB
22
AC
19 ms
696 KB
23
AC
19 ms
752 KB
24
AC
20 ms
804 KB
25
AC
22 ms
928 KB
26
AC
19 ms
804 KB
27
AC
22 ms
1060 KB
28
AC
63 ms
4128 KB
29
AC
69 ms
4512 KB
3
AC
20 ms
808 KB
30
AC
47 ms
3240 KB
31
AC
84 ms
4836 KB
4
AC
19 ms
700 KB
5
AC
20 ms
808 KB
6
AC
19 ms
700 KB
7
AC
18 ms
692 KB
8
AC
19 ms
708 KB
9
AC
20 ms
928 KB