Submission #3644497
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define rep(i,n) for(int (i)=0;(i)<(int)(n);++(i))
#define all(x) (x).begin(),(x).end()
typedef pair<int,int> P;
const int N=1<<20;
int qsz=0;
queue<int> que[100005];
int cnt[1<<21];
int id[1<<21];
int a[100005];
int sum[100005];
void init(){
memset(id,-1,sizeof(id));
}
void add(int v,int idz){
v+=N-1;
cnt[v]++;
if(id[v]==-1){
id[v]=qsz++;
}
//printf("%d\n",id[v]);
que[id[v]].push(idz);
while(v>0){
v=(v-1)/2;
cnt[v]=cnt[v*2+1]+cnt[v*2+2];
}
}
void del(int v){
v+=N-1;
cnt[v]--;
que[id[v]].pop();
while(v>0){
v=(v-1)/2;
cnt[v]=cnt[v*2+1]+cnt[v*2+2];
}
}
P query(int v){
int cur=0;
P ans=P(0,-1);
int k=0;
for(int i=19;i>=0;i--){
int b=1-((v>>i)&1);
int nxt=k*2+1+b;
if(cnt[nxt]==0){
nxt=k*2+1+(1-b);
}else{
ans.first+=(1<<i);
}
k=nxt;
}
//printf("%d %d\n",k,N);
ans.second=que[id[k]].front();
return ans;
}
int main(){
int n;
scanf("%d",&n);
init();
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
sum[i+1]+=sum[i];
sum[i+1]^=a[i];
add(sum[i+1],i+1);
}
int ans=-1;
P p=P(0,0);
for(int i=0;i<n;i++){
P q=query(sum[i]);
if(q.first>ans){
ans=q.first;
p=P(i+1,q.second);
}
del(sum[i+1]);
}
printf("%d %d %d\n",ans,p.first,p.second);
return 0;
}
Submission Info
Submission Time
2018-11-23 18:09:40+0900
Task
F - Maximum Segment XOR
User
WAsedAC1
Language
C++14 (GCC 5.4.1)
Score
100
Code Size
1626 Byte
Status
AC
Exec Time
107 ms
Memory
84608 KB
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:65:19: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d",&n);
^
./Main.cpp:68:26: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d",&a[i]);
^
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
57 ms
81792 KB
10
AC
57 ms
83840 KB
11
AC
58 ms
83840 KB
12
AC
57 ms
83840 KB
13
AC
60 ms
83840 KB
14
AC
60 ms
83840 KB
15
AC
61 ms
83840 KB
16
AC
79 ms
82176 KB
17
AC
71 ms
84096 KB
18
AC
107 ms
84608 KB
19
AC
57 ms
81792 KB
2
AC
57 ms
81792 KB
20
AC
57 ms
81792 KB
21
AC
57 ms
81792 KB
22
AC
57 ms
81792 KB
23
AC
57 ms
81792 KB
24
AC
57 ms
81792 KB
25
AC
58 ms
81792 KB
26
AC
57 ms
81792 KB
27
AC
59 ms
81792 KB
28
AC
86 ms
84352 KB
29
AC
89 ms
84352 KB
3
AC
57 ms
81792 KB
30
AC
76 ms
84224 KB
31
AC
103 ms
84608 KB
4
AC
57 ms
81792 KB
5
AC
57 ms
81792 KB
6
AC
58 ms
83840 KB
7
AC
57 ms
83840 KB
8
AC
59 ms
83840 KB
9
AC
58 ms
81792 KB