Submission #330779

#TimeUsernameProblemLanguageResultExecution timeMemory
330779vitkishloh228Intergalactic ship (IZhO19_xorsum)C++14
9 / 100
2068 ms6924 KiB
#include<iostream> #include<vector> #include<algorithm> using namespace std; #define int long long const int inf = 1e9 + 7; int32_t main() { int n; cin >> n; vector<int> a(n); for (int& i : a) cin >> i; int q; cin >> q; vector<vector<int>> vals; vector<vector<int>> query(n); for (int i = 0; i < q; ++i) { int l, r, x; cin >> l >> r >> x; --l, r--; vals.push_back({ l,r,x }); for (int j = l; j <= r; ++j) { query[j].push_back(x); } } int ans = 0; if (q <= 20) { for (int mask = 0; mask < (1 << q); ++mask) { vector<int> open(n + 1), close(n + 1); for (int i = 0; i < q; ++i) { if ((mask & (1 << i))) { open[vals[i][0]] ^= vals[i][2]; close[vals[i][1] + 1] ^= vals[i][2]; } } vector<int> pr(n + 1); int cur = 0; for (int i = 0; i < n; ++i) { cur ^= open[i]; int R = a[i] ^ cur; pr[i + 1] = pr[i] + R; pr[i + 1] %= inf; cur ^= close[i + 1]; } for (int i = 0; i < n; ++i) { for (int j = i; j < n; ++j) { int sum = pr[j + 1] - pr[i]; if (sum < 0) sum += inf; sum = (sum * sum) % inf; ans += sum; ans %= inf; } } } cout << ans; return 0; } }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...