Submission #486165

#TimeUsernameProblemLanguageResultExecution timeMemory
486165acmXOR (IZhO12_xor)C++14
100 / 100
118 ms25284 KiB
#ifdef ONLINE_JUDGE #pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math,O3") #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") #endif #include <bits/stdc++.h> #define speed \ ios_base::sync_with_stdio(0); \ cin.tie(0); \ cout.tie(0); #define precision \ cout.precision(30); \ cerr.precision(10); #define ll long long #define ld long double #define pb(x) push_back(x) #define sz(x) (int)x.size() #define mp(x, y) make_pair(x, y) #define all(x) x.begin(), x.end() #define pc(x) __builtin_popcount(x) #define pcll(x) __builtin_popcountll(x) #define F first #define S second using namespace std; mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); void ioi(string name) { freopen((name + ".in").c_str(), "r", stdin); freopen((name + ".out").c_str(), "w", stdout); } int n, k, P, res, ser, a[250005], b[250005], go[30 * 250005][2], g[60 * 250005]; void add(int x) { int v = 0; for (int i = 30; i >= 0; i--) { int h = !!((1 << i) & b[x]); if (!go[v][h]) go[v][h] = ++P; v = go[v][h]; g[v] = x; } } int get(int x) { int v = 0, z = 0; for (int i = 30; i >= 0; i--) { int h = !!((1 << i) & x); int d = !!((1 << i) & k); if (!d && go[v][!h]) z = max(z, g[go[v][!h]]); v = go[v][h ^ d]; if (!v) break; } return max(z, g[v]); } int main() { speed; precision; // code cin >> n >> k; for (int i = 1; i <= n; i++) cin >> a[i], b[i] = b[i - 1] ^ a[i]; for (int i = 0; i <= n; i++) add(i); for (int i = 0; i < n; i++) { int x = get(b[i]); if (k <= (b[i] ^ b[x]) && x - i > ser) { ser = x - i; res = i + 1; } } cout << res << " " << ser; // endl #ifndef ONLINE_JUDGE cerr << "\nTime elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n"; #endif return 0; }

Compilation message (stderr)

xor.cpp: In function 'void ioi(std::string)':
xor.cpp:26:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   26 |   freopen((name + ".in").c_str(), "r", stdin);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
xor.cpp:27:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   27 |   freopen((name + ".out").c_str(), "w", stdout);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...