Submission #1131952

#TimeUsernameProblemLanguageResultExecution timeMemory
1131952MuhammetIntergalactic ship (IZhO19_xorsum)C++20
17 / 100
2095 ms8264 KiB
#include <bits/stdc++.h>	
using namespace std;

#define ff first
#define ss second
#define ll long long

const int N = 5e5 + 5;
const ll M = 1e9 + 7;

ll n, q, ans;

vector <int> a, a1, l, r, x, b;

void f(int k){
	if(k == q+1){
		a1 = a;
		for(int i = 1; i <= q; i++){
			if(!b[i]) continue;
			for(int j = l[i]; j <= r[i]; j++){
				a1[j] ^= x[i];
			}
		}
		for(int i = 1; i <= n; i++){
			ll y = 0;
			for(int j = i; j <= n; j++){
				y += a1[j];
				ans += (y*y);
				ans %= M;
			}
		}
		return;
	}
	for(int i = 0; i < 2; i++){
		b[k] = i;
		f(k+1);
	}
}

int main(){
	ios::sync_with_stdio(false); cin.tie(0);
	
	cin >> n;
	a.resize(n+1);
	for(int i = 1; i <= n; i++){
		cin >> a[i];
	}
	cin >> q;
	l.resize(q+1), r.resize(q+1), x.resize(q+1), b.resize(q+1,0);
	for(int i = 1; i <= q; i++){
		cin >> l[i] >> r[i] >> x[i];
	}
	f(1);
	cout << ans << '\n';
	return 0;
}
#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...