Submission #1246299

#TimeUsernameProblemLanguageResultExecution timeMemory
1246299wedonttalkanymoreXORanges (eJOI19_xoranges)C++20
0 / 100
92 ms15428 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; #define int long long #define pii pair<ll, ll> #define fi first #define se second const ll N = 2e5 + 5, inf = 1e18, mod = 1e9 + 7, block = 320, lim = 1 << 16; int n, q; int a[N]; struct ST { vector <int> st; ST (int _n) { st.assign(4 * _n, 0); } void update(int i, int l, int r, int pos, int val) { if (l == r) { st[i] = val; return; } int mid = (l + r) / 2; if (pos <= mid) update(2 * i, l, mid, pos, val); else update(2 * i + 1, mid + 1, r, pos, val); st[i] = st[2 * i] ^ st[2 * i + 1]; } int get(int i, int l, int r, int u, int v) { if (u > r || v < l) return 0; if (u <= l && r <= v) return st[i]; int mid = (l + r) / 2; return get(2 * i, l, mid, u, v) ^ get(2 * i + 1, mid + 1, r, u, v); } }; signed main() { ios::sync_with_stdio(false); cin.tie(0); if (fopen(".inp", "r")) { freopen(".inp", "r", stdin); freopen(".out", "w", stdout); } cin >> n >> q; for (int i = 1; i <= n; i++) cin >> a[i]; ST st1(n + 1), st2(n + 1); for (int i = 1; i <= n; i++) { if (i % 2 == 0) st1.update(1, 1, n, i, a[i]); else st2.update(1, 1, n, i, a[i]); } while(q-- > 0) { int type, l, r; cin >> type >> l >> r; if (type == 1) { if (l % 2 == 0) st1.update(1, 1, n, l, r); else st2.update(1, 1, n, l, r); } else { if ((r - l + 1) % 2 == 0) cout << 0; else if (l % 2 == 0) cout << st1.get(1, 1, n, l, r) << '\n'; else cout << st2.get(1, 1, n, l, r) << '\n'; } } return 0; }

Compilation message (stderr)

xoranges.cpp: In function 'int main()':
xoranges.cpp:41:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   41 |         freopen(".inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~
xoranges.cpp:42:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   42 |         freopen(".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...