Submission #563991

#TimeUsernameProblemLanguageResultExecution timeMemory
563991StickfishIntergalactic ship (IZhO19_xorsum)C++17
9 / 100
2087 ms2224 KiB
#include <iostream>
#include <vector>
using namespace std;
using ll = long long;

const int MAXN = 1008;
const ll MOD = 1000000007;
int a[MAXN];

signed main() {
    int n;
    cin >> n;
    for (int i = 0; i < n; ++i)
        cin >> a[i];
    int q;
    cin >> q;
    vector<pair<pair<int, int>, int>> qrs(q);
    for (int i = 0; i < q; ++i) {
        cin >> qrs[i].first.first >> qrs[i].first.second >> qrs[i].second;
        --qrs[i].first.first;
    }
    ll ans = 0;
    for (int m = 0; m < (1 << q); ++m) {
        vector<int> b(n);
        for (int i = 0; i < n; ++i)
            b[i] = a[i];
        for (int j = 0; j < q; ++j) {
            if (m & (1 << j)) {
                auto [sg, x] = qrs[j];
                for (int i = sg.first; i < sg.second; ++i) {
                    b[i] ^= x;
                }
            }
        }
        for (int i = 0; i < n; ++i) {
            int sm = 0;
            for (int j = i; j < n; ++j) {
                sm += b[j];
                ans += 1ll * sm * sm;
                ans %= MOD;
                //cout << sm << ' ';
            }
        }
    }
    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...