Submission #1136656

#TimeUsernameProblemLanguageResultExecution timeMemory
1136656domblyIntergalactic ship (IZhO19_xorsum)C++20
17 / 100
2095 ms2632 KiB
#include <bits/stdc++.h>

#define int long long 

#define pb push_back
 
#define F first
 
#define S second
 
using namespace std;
 
const int N = 1e5 + 10;

const int mod = 1e9 + 7;

const int inf = 1e9;
 
int add(int x,int y) {
	x += y;
	if(x >= mod) x -= mod;
	return x;
} 

int mul(int x,int y) {
	return (x * y) % mod;
}
 
signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

	int n;
	cin >> n;
	vector<int>a(n + 1);
	for(int i = 1; i <= n; i++) cin >> a[i];
	int q;
	cin >> q;
	vector<array<int,3>>kveri(q + 1);
	for(int i = 1; i <= q; i++) cin >> kveri[i][0] >> kveri[i][1] >> kveri[i][2];
	int ans = 0;
	for(int mask = 1; mask < (1 << q); mask++) {
		vector<int>b = a;
		for(int bit = 0; bit < q; bit++) {
			if((1 << bit) & mask) {
				for(int i = kveri[bit + 1][0]; i <= kveri[bit + 1][1]; i++) {
					b[i] ^= kveri[bit + 1][2];
				}
			}
		}
		for(int i = 1; i <= n; i++) {
			int s = 0;
			for(int j = i; j <= n; j++) {
				s += b[j];
				ans = add(ans,mul(s,s));
			}
		}
	}
	for(int i = 1; i <= n; i++) {
		int s = 0;
		for(int j = i; j <= n; j++) {
			s += a[j];
			ans = add(ans,mul(s,s));
		}
	}
	cout << ans;
	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...