//Suleyman Atayew
#include <algorithm>
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <vector>
#include <queue>
#include <cmath>
#include <map>
#include <set>
#define N 7500010
#define ff first
#define ss second
#define pb push_back
#define ll long long
#define mod 1000000007
#define pii pair <int, int>
#define sz(a) (int)(a.size())
ll bigmod(ll a, ll b) { if(b==0)return 1; ll ret = bigmod(a, b/2); return ret * ret % mod * (b%2 ? a : 1) % mod; }
using namespace std;
int v[N];
int In[N];
int F[N][5];
int sz, n, k;
void upd(int x, int y)
{
int nd = 0;
for(int i = 30; i >= 0; i--) {
int tp = 0;
if(((1<<i) & x)) tp = 1;
if(F[nd][tp] == -1) F[nd][tp] = ++sz;
nd = F[nd][tp];
In[nd] = min(y, In[nd]);
}
}
int tap(int x, int y, int need, int nd)
{
int tp = 1;
if(((1<<y)&x)) tp = 0;
if(need <= 0) return In[nd];
if(y < 0) return 1e9;
if((1<<y) < need) {
if(F[nd][tp] == -1) return 1e9;
return tap(x, y-1, need - (1<<y), F[nd][tp]);
}
if(F[nd][0] == -1 && F[nd][1] == -1) return 1e9;
if(F[nd][0] == -1) {
need -= (tp == 0 ? 0 : (1<<y));
return tap(x, y-1, need, F[nd][1]);
}
if(F[nd][1] == -1) {
need -= (tp == 1 ? 0 : (1<<y));
return tap(x, y-1, need, F[nd][0]);
}
return min(tap(x, y-1, (need - (tp == 0 ? (1<<y) : 0)), F[nd][0]), tap(x, y-1, (need - (tp == 1 ? (1<<y) : 0)), F[nd][1]));
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cin >> n >> k;
for(int i = 0; i <= 7500000; i++) F[i][0] = F[i][1] = -1, In[i] = 1e9;
for(int i = 1; i <= n; i++)
cin >> v[i], v[i] ^= v[i-1];
int l = 1e9, ans = 0;
for(int i = 1; i <= n; i++) {
int now = tap(v[i], 30, k, 0);
upd(v[i], i);
// cout << i << " " << now << " " << v[i] << "\n";
if(ans < i - now) {
ans = i - now;
l = now+1;
}
}
if(l == 1e9) l = 1, ans = 1;
cout << l << " " << ans;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
87 ms |
176492 KB |
Output is correct |
2 |
Correct |
85 ms |
176492 KB |
Output is correct |
3 |
Correct |
89 ms |
176620 KB |
Output is correct |
4 |
Correct |
92 ms |
176492 KB |
Output is correct |
5 |
Correct |
94 ms |
176492 KB |
Output is correct |
6 |
Correct |
97 ms |
176620 KB |
Output is correct |
7 |
Correct |
94 ms |
176620 KB |
Output is correct |
8 |
Correct |
102 ms |
176724 KB |
Output is correct |
9 |
Correct |
140 ms |
176876 KB |
Output is correct |
10 |
Correct |
131 ms |
177644 KB |
Output is correct |
11 |
Correct |
131 ms |
177868 KB |
Output is correct |
12 |
Correct |
135 ms |
177644 KB |
Output is correct |
13 |
Correct |
140 ms |
177644 KB |
Output is correct |
14 |
Correct |
130 ms |
177644 KB |
Output is correct |
15 |
Correct |
132 ms |
177772 KB |
Output is correct |
16 |
Correct |
134 ms |
177772 KB |
Output is correct |
17 |
Correct |
227 ms |
179436 KB |
Output is correct |
18 |
Correct |
226 ms |
179564 KB |
Output is correct |
19 |
Correct |
238 ms |
179436 KB |
Output is correct |
20 |
Correct |
224 ms |
179436 KB |
Output is correct |