#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
#define threesum cin.tie(NULL); cout.tie(NULL); ios_base::sync_with_stdio(false)
#define all(a) a.begin(), a.end()
#define F first
#define S second
#define int long long
#define double long double
#define pii pair<int, int>
#define ppp pair<int, pii>
#define dout cout << fixed << setprecision(15)
#define mid ((l + r) / 2)
#define lc (2 * id)
#define rc (lc + 1)
const int maxn = 1e6 + 10, maxm = 1e2 + 10, oo = 1e18 + 10, lg = 8, sq = 350, mod = 1e9 + 7;
int n, m, a[maxm], b[maxm], px[maxm];
vector<ppp> q;
signed main()
{
threesum;
cin >> n;
for (int i = 1; i <= n;i++)
cin >> a[i];
cin >> m;
for (int i = 1; i <= m;i++){
int l, r, x;
cin >> l >> r >> x;
q.push_back({x, {l, r}});
}
int ans = 0;
for (int mask = 0; mask < (1ll << m); mask++){
for (int i = 0; i < m; i++)
if(mask & (1ll << i)){
px[q[i].S.F] ^= q[i].F;
px[q[i].S.S + 1] ^= q[i].F;
}
for (int i = 1; i <= n; i++){
px[i] ^= px[i - 1];
b[i] = a[i] ^ px[i];
}
int res = 0;
for (int i = 1; i <= n; i++){
int s = 0;
for (int j = i; j <= n; j++){
(s += b[j]) %= mod;
(res += (s * s) % mod) %= mod;
}
}
(ans += res) %= mod;
for (int i = 1; i <= n; i++)
px[i] = 0;
}
cout << ans;
}
# | 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... |