//Dost SEFEROĞLU
#pragma GCC optimize("O3,unroll-loops,Ofast")
#include <bits/stdc++.h>
using namespace std;
//#define int long long
#define pii pair<int,int>
#define ff first
#define ss second
#define sp << " " <<
#define vi vector<int>
const int N = 2e5+100,inf = INT_MAX,MOD = 1e9+7,LIM = 3e7+1;
int curnode = 1;
struct Node {
int c[2],mx;
};
Node nds[LIM];
int walk(Node* cur, int x,int k,int bit = 29) {
if (bit == -1) return k?0:cur->mx;
//x ile xor layınca en az k gelmesi lzm
if (k & (1<<bit)) {
int go = !(x&(1<<bit));
if (cur->c[go]) return walk(nds+cur->c[go],x,k^(1<<bit),bit-1);
else return 0;
}
else {
int go = !(x&(1<<bit));
int ans = 0;
if (cur->c[go]) ans = max(ans,nds[cur->c[go]].mx);
ans = max(ans,walk(nds+cur->c[!go],x,k,bit-1));
return ans;
}
}
void insert(int x,int p) {
Node* cur = nds+1;
for (int i=29;i>=-1;i--) {
cur->mx = max(cur->mx,p);
if (i > -1) {
bool go = !!(x&(1<<i));
if (!cur->c[go]) cur->c[go] = ++curnode;
cur = nds+cur->c[go];
}
}
}
void solve() {
int n,x;
cin >> n >> x;
vi a(n+1),p(n+1,0);
for (int i=1;i<=n;i++) cin >> a[i];
for (int i=1;i<=n;i++) p[i] = p[i-1]^a[i];
int ans = 0,start = 0;
for (int i=n;i>=1;i--) {
insert(p[i],i);
int xx = walk(nds+1,p[i-1],x);
if (xx-i+1 >= ans) {
ans = xx-i+1;
start = i;
}
}
cout << start sp ans << endl;
}
signed main() {
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#ifdef Dodi
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
#endif
int t = 1;
//cin >> t;
while (t --> 0) solve();
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
1 ms |
600 KB |
Output is correct |
5 |
Correct |
7 ms |
1116 KB |
Output is correct |
6 |
Correct |
8 ms |
1372 KB |
Output is correct |
7 |
Correct |
8 ms |
1380 KB |
Output is correct |
8 |
Correct |
8 ms |
1452 KB |
Output is correct |
9 |
Correct |
29 ms |
11856 KB |
Output is correct |
10 |
Correct |
33 ms |
11736 KB |
Output is correct |
11 |
Correct |
29 ms |
11860 KB |
Output is correct |
12 |
Correct |
32 ms |
11792 KB |
Output is correct |
13 |
Correct |
28 ms |
11860 KB |
Output is correct |
14 |
Correct |
29 ms |
11872 KB |
Output is correct |
15 |
Correct |
28 ms |
11860 KB |
Output is correct |
16 |
Correct |
28 ms |
11808 KB |
Output is correct |
17 |
Correct |
82 ms |
24584 KB |
Output is correct |
18 |
Correct |
84 ms |
24716 KB |
Output is correct |
19 |
Correct |
106 ms |
24688 KB |
Output is correct |
20 |
Correct |
85 ms |
24572 KB |
Output is correct |