#include <bits/stdc++.h>
using namespace std;
#define F first
#define S second
const int N = 1010, Q = 1e5 + 100, mod = 1e9 + 7;
int n, q, a[N], b[N];
vector<pair<int, pair<int, int>>> queries;
int main(){
cin >> n;
for (int i = 1; i <= n; i ++)
cin >> a[i], b[i] = a[i];
cin >> q;
for (int i = 0; i < q; i ++){
int l, r, x;
cin >> l >> r >> x;
queries.push_back({l, {r, x}});
}
sort(queries.begin(), queries.end());
long long ans = 0;
for (int mask = 0; mask < (1 << q); mask ++){
for (int i = 0; i < q; i ++){
if (((1 << i) & mask) == 0) continue;
for (int j = queries[i].F; j <= queries[i].S.F; j ++)
a[j] ^= queries[i].S.S;
}
for (int i = 1; i <= n; i ++){
int sm = 0;
for (int j = i; j <= n; j ++){
sm += a[j];
ans += sm * sm;
}
a[i] = b[i];
}
ans %= mod;
}
cout << ans << endl;
}
# | 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... |