Submission #1020885

#TimeUsernameProblemLanguageResultExecution timeMemory
1020885FIFI_cppXORanges (eJOI19_xoranges)C++17
0 / 100
53 ms4004 KiB
#include <iostream> #include <vector> #include <algorithm> #include <numeric> #include <cstdlib> #include <cmath> #include <queue> #include <stack> #include <deque> #include <fstream> #include <iterator> #include <set> #include <map> #include <unordered_map> #include <iomanip> #include <cctype> #include <string> #include <cassert> #include <set> #include <bitset> #include <unordered_set> using ll = int64_t; #define pb push_back #define all(a) a.begin(),a.end() #define ppi pair<pair<int,int>,int> #define fast ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); //#define int int64_t // xcode cant include bits/stdc++.h using namespace std; //ifstream fin ("sleepy.in"); //ofstream fout ("sleepy.out"); /* /\_/\ * (= ._.) * / > \> */ // encouraging cat const int INF = 10000000000000000; const int mod = 1000000007; const int MAXN = 100; struct node { int even,odd; }; vector<pair<int,int>> t; vector<int> a; pair<int,int> merge(int v) { t[v].first = t[v * 2].first ^ t[v * 2 + 1].first; t[v].second = t[v * 2].second ^ t[v * 2 + 1].second; return t[v]; } void build(int v, int tl, int tr) { if (tl == tr) { if (tl % 2 == 0) t[v].first = a[tl]; else t[v].second = a[tl]; } else { int tm = (tl + tr) / 2; build(v*2, tl, tm); build(v*2+1, tm+1, tr); merge(v); } } int query(int v, int tl, int tr, int l, int r) { if (l > r) return 0; if (l == tl && r == tr) { if (l % 2 == 0) return t[v].first; return t[v].second; } int tm = (tl + tr) / 2; return query(v*2, tl, tm, l, min(r, tm)) + query(v*2+1, tm+1, tr, max(l, tm+1), r); } void update(int v, int tl, int tr, int pos, int new_val) { if (tl == tr) { if (tr % 2 == 0) t[v].first = new_val; else t[v].second = new_val; } else { int tm = (tl + tr) / 2; if (pos <= tm) update(v*2, tl, tm, pos, new_val); else update(v*2+1, tm+1, tr, pos, new_val); merge(v); } } int32_t main() { int n,q; cin >> n >> q; a.resize(n); t.resize(MAXN); for (int i = 0;i < n;i++) cin >> a[i]; build(1, 0, n - 1); bool ok = true; while (q--) { int t; cin >> t; if (t == 1) { int i,v; cin >> i >> v; i--; a[i] = v; update(1, 0, n - 1, i, v); } else { int l,r; cin >> l >> r; l--; r--; if ((l - r + 1) % 2 == 0) { cout << 0 << '\n'; continue; } else if (l - r + 1 == 2) { int cr = a[l]; cr ^= a[r]; cout << cr << '\n'; continue; } cout << query(1, 0, n - 1, l, r) << '\n'; } } return 0; }

Compilation message (stderr)

xoranges.cpp:32:9: warning: "/*" within comment [-Wcomment]
   32 | /*   /\_/\
      |          
xoranges.cpp:37:17: warning: overflow in conversion from 'long int' to 'int' changes value from '10000000000000000' to '1874919424' [-Woverflow]
   37 | const int INF = 10000000000000000;
      |                 ^~~~~~~~~~~~~~~~~
xoranges.cpp: In function 'int32_t main()':
xoranges.cpp:106:10: warning: unused variable 'ok' [-Wunused-variable]
  106 |     bool ok = true;
      |          ^~
#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...