#include <bits/stdc++.h>
#define int long long
#define pb push_back
#define F first
#define S second
using namespace std;
const int N = 1e5 + 10;
const int mod = 1e9 + 7;
const int inf = 1e9;
int add(int x,int y) {
x += y;
if(x >= mod) x -= mod;
return x;
}
int mul(int x,int y) {
return (x * y) % mod;
}
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n;
cin >> n;
vector<int>a(n + 1);
for(int i = 1; i <= n; i++) cin >> a[i];
int q;
cin >> q;
vector<array<int,3>>kveri(q + 1);
for(int i = 1; i <= q; i++) cin >> kveri[i][0] >> kveri[i][1] >> kveri[i][2];
int ans = 0;
for(int mask = 1; mask < (1 << q); mask++) {
vector<int>b = a;
for(int bit = 0; bit < q; bit++) {
if((1 << bit) & mask) {
for(int i = kveri[bit + 1][0]; i <= kveri[bit + 1][1]; i++) {
b[i] ^= kveri[bit + 1][2];
}
}
}
for(int i = 1; i <= n; i++) {
int s = 0;
for(int j = i; j <= n; j++) {
s += b[j];
ans = add(ans,mul(s,s));
}
}
}
for(int i = 1; i <= n; i++) {
int s = 0;
for(int j = i; j <= n; j++) {
s += a[j];
ans = add(ans,mul(s,s));
}
}
cout << ans;
return 0;
}
# | 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... |