Submission #651195

#TimeUsernameProblemLanguageResultExecution timeMemory
651195BrineTwIntergalactic ship (IZhO19_xorsum)C++14
17 / 100
2073 ms2212 KiB
#include <bits/stdc++.h>

using namespace std;

const int M = 1e9 + 7;

struct Update {
    int l, r, x;
};

int mAdd(const int a, const int b) {
    if (a + b >= M) return a + b - M;
    if (a + b < 0) return a + b + M;
    return a + b;
}

int calculate(vector<int> v, vector<Update>& update, int i) {
    int sum = 0;

    for (int j = 0; i; j++, i >>= 1) {
        if (i & 1) {
            for (int k = update[j].l; k < update[j].r; k++) {
                v[k] ^= update[j].x;
            }
        }
    }

    for (int i = 0; i < v.size(); i++) {
        int currentTotal = 0;
        for (int j = i; j < v.size(); j++) {
            currentTotal += v[j];
            sum = mAdd(sum, currentTotal * currentTotal % M);
        }
    }

    return sum;
}

int main() {
    int length;
    cin >> length;

    vector<int> v(length);
    for (auto& n: v) cin >> n;

    int query;
    cin >> query;

    vector<Update> update(query);
    for (auto& [l, r, x]: update) {
        cin >> l >> r >> x;
        --l;
    }

    int sum = 0;
    for (int i = 0; i < (1 << query); i++) {
        sum = mAdd(sum, calculate(v, update, i));
    }

    cout << sum << '\n';
}

Compilation message (stderr)

xorsum.cpp: In function 'int calculate(std::vector<int>, std::vector<Update>&, int)':
xorsum.cpp:28:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   28 |     for (int i = 0; i < v.size(); i++) {
      |                     ~~^~~~~~~~~~
xorsum.cpp:30:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   30 |         for (int j = i; j < v.size(); j++) {
      |                         ~~^~~~~~~~~~
xorsum.cpp: In function 'int main()':
xorsum.cpp:50:16: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   50 |     for (auto& [l, r, x]: update) {
      |                ^
#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...