Submission #41611

#TimeUsernameProblemLanguageResultExecution timeMemory
41611MatheusLealVXOR (IZhO12_xor)C++14
0 / 100
2052 ms262144 KiB
#include <bits/stdc++.h> #define N 250005 #define logn 31 using namespace std; int n, k, v[N], dp[N]; struct node { node *prox[2]; int num, qtd; node() {prox[0] = prox[1] = NULL, num = qtd = 0;} }; node *version[N]; inline void add(int num, node *prev, node *root) { root->qtd = prev->qtd + 1; for(int i = logn; i >= 0; i--) { int mask = (num & (1<<i)) ? 1:0; if(mask) { root->prox[1] = new node; if(prev != NULL) root->prox[0] = prev->prox[0]; } else { root->prox[0] = new node; if(prev != NULL) root->prox[1] = prev->prox[1]; } root = (mask) ? root->prox[1] : root->prox[0]; if(prev != NULL) prev = (mask) ? prev->prox[1] : prev->prox[0]; root->qtd = 1; if(prev != NULL) root->qtd += prev->qtd; } } inline bool check(node *root, int x) { int y = 0; for(int i = logn; i >= 0; i --) { bool bit = (x & (1<<i)); if(root->prox[!bit]) { y += (1<<i); root = root->prox[!bit]; } else root = root->prox[bit]; } return y >= k; } int main() { ios::sync_with_stdio(false); cin.tie(0); cin>>n>>k; for(int i = 1; i <= n; i++) cin>>v[i], v[i] ^= v[i - 1]; version[0] = new node(); node *root = version[0]; for(int i = logn; i >= 0; i--) { root->prox[0] = new node(); root = root->prox[0]; } for(int i = 1; i <= n; i++) { version[i] = new node(); add(v[i], version[i - 1], version[i]); } for(int i = 1; i <= n; i++) { int ini = 1, fim = i, mid, best = -1; while(fim >= ini) { mid = (ini + fim)/2; if(check(version[mid - 1], v[i])) { dp[mid] = max(dp[mid], i); fim = mid - 1; } else ini = mid + 1; } } int ans = 0; for(int i = 1; i <= n; i++) ans = max(ans, dp[i] - i); for(int i = 1; i <= n; i++) if(dp[i] - i == ans) { cout<<i<<" "<<ans + 1<<"\n"; return 0; } }

Compilation message (stderr)

xor.cpp: In function 'int main()':
xor.cpp:99:30: warning: unused variable 'best' [-Wunused-variable]
   int ini = 1, fim = i, mid, best = -1;
                              ^
#Verdict Execution timeMemoryGrader output
Fetching results...