Submission #508590

#TimeUsernameProblemLanguageResultExecution timeMemory
508590sidonXOR (IZhO12_xor)C++17
100 / 100
326 ms42512 KiB
#include <bits/stdc++.h> using namespace std; int N, X, pref, ind, k, curr, u, j; int C[2][1<<22], t[1<<22]; #define minim(l, r) if(l && r-l > k) k = r-l, ind = l void go(bool c) { u = C[c][u] ? : C[c][u] = ++curr; } int main() { cin >> N >> X; for(int i = 1; i <= N + 1; i++) { for(u = 0, j = 1<<30; j/=2; ) { if(!(X & j)) minim(t[C[!(pref & j)][u]], i); go((pref & j) ^ (X & j)); } minim(t[u], i); for(u = 0, j = 1<<30; j/=2; ) { go(pref & j); t[u] = t[u] ? : i; } cin >> u; pref ^= u; } cout << ind << ' ' << k; }
#Verdict Execution timeMemoryGrader output
Fetching results...