Submission #1156457

#TimeUsernameProblemLanguageResultExecution timeMemory
1156457Ghulam_JunaidIntergalactic ship (IZhO19_xorsum)C++20
17 / 100
2094 ms1980 KiB
#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 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...