Submission #101895
Source Code Expand
#include <cstdio> int N; typedef struct { int v0; int v1; int nd; }sts; sts st[2000002]; int as[100002]; int sum[100002]; int sz; void newv(void) { st[sz].v0=-1; st[sz].v1=-1; st[sz].nd=N+1; sz++; } void add(int num,int vl) { int id=0; for(int j=19;j>=0;j--) { if(vl&(1<<j)) { if(st[id].v1<0) { st[id].v1=sz; id=sz; newv(); } else { id=st[id].v1; } } else { if(st[id].v0<0) { st[id].v0=sz; id=sz; newv(); } else { id=st[id].v0; } } if(st[id].nd>num) st[id].nd=num; } } int pl2=0; int calc(int vl) { int id=0; int ret=0; for(int j=19;j>=0;j--) { if(vl&(1<<j)) { if(st[id].v1<0) { id=st[id].v0; } else { id=st[id].v1; ret+=(1<<j); } } else { if(st[id].v0<0) { id=st[id].v1; } else { id=st[id].v0; ret+=(1<<j); } } } pl2=st[id].nd; return ret; } int main() { scanf("%d",&N); newv(); for(int i=1;i<=N;i++) { scanf("%d",&as[i]); sum[i]=as[i]; if(i>1) sum[i]=as[i]^sum[i-1]; add(i,sum[i]); } int mx=-1; int lf=0; int rg=0; for(int i=0;i<=N;i++) { int inv=((1<<20)-1)^sum[i]; int calcret=calc(inv); if(mx<calcret) { mx=calcret; lf=i; rg=pl2; } else { if(mx==calcret) { if(i<lf) { lf=i; rg=pl2; } else { if(i==lf) { if(pl2<rg) pl2=rg; } } } } } printf("%d %d %d\n",mx,lf+1,rg); return 0; }
Submission Info
Submission Time | |
---|---|
Task | F - Maximum Segment XOR |
User | phidnight |
Language | C++ (GCC 4.4.7) |
Score | 100 |
Code Size | 1483 Byte |
Status | AC |
Exec Time | 108 ms |
Memory | 6884 KB |
Compile Error
./Main.cpp: In function ‘int main()’: ./Main.cpp:67: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result ./Main.cpp:70: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_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 | 21 ms | 932 KB |
10 | AC | 22 ms | 868 KB |
11 | AC | 20 ms | 804 KB |
12 | AC | 21 ms | 804 KB |
13 | AC | 24 ms | 1444 KB |
14 | AC | 26 ms | 1436 KB |
15 | AC | 28 ms | 1584 KB |
16 | AC | 62 ms | 3492 KB |
17 | AC | 48 ms | 3228 KB |
18 | AC | 108 ms | 6884 KB |
19 | AC | 20 ms | 924 KB |
2 | AC | 19 ms | 928 KB |
20 | AC | 20 ms | 804 KB |
21 | AC | 20 ms | 796 KB |
22 | AC | 23 ms | 772 KB |
23 | AC | 22 ms | 804 KB |
24 | AC | 22 ms | 740 KB |
25 | AC | 22 ms | 928 KB |
26 | AC | 22 ms | 812 KB |
27 | AC | 25 ms | 1060 KB |
28 | AC | 72 ms | 4516 KB |
29 | AC | 79 ms | 4896 KB |
3 | AC | 21 ms | 932 KB |
30 | AC | 57 ms | 3544 KB |
31 | AC | 103 ms | 5288 KB |
4 | AC | 21 ms | 808 KB |
5 | AC | 21 ms | 932 KB |
6 | AC | 21 ms | 812 KB |
7 | AC | 20 ms | 800 KB |
8 | AC | 21 ms | 932 KB |
9 | AC | 20 ms | 924 KB |