/**
* author: a.k
* created: idk
**/
#include <bits/stdc++.h>
using namespace std;
#define all(x) x.begin(), x.end()
#define int long long
#define nl '\n'
const int Mod = 1e9 + 7;
void add(int &a, const int &b) {
a += b;
if(a > Mod) {
a -= Mod;
}
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n; cin >> n;
vector<int> b(n);
for(auto &u : b) cin >> u;
int q; cin >> q;
vector<array<int, 3>> v(q);
for(auto &[l, r, x] : v) {
cin >> l >> r >> x;
l--;
}
int ans = 0;
for(int mask = 0; mask < (1 << q); mask++) {
auto a = b;
for(int i = 0; i < q; i++) {
if(mask >> i & 1) {
auto [l, r, x] = v[i];
for(int k = l; k < r; k++) a[k] ^= x;
}
}
vector<int> pref(n + 1);
for(int i = 0; i < n; i++) add(pref[i + 1], pref[i] + a[i]);
int sum = 0;
for(int i = 0; i < n; i++) {
for(int j = i; j < n; j++) {
int u = pref[j + 1] - pref[i];
add(sum, (u * u) % Mod);
}
}
add(ans, sum);
}
cout << ans << nl;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |