Submission #1156267

#TimeUsernameProblemLanguageResultExecution timeMemory
1156267MuhammadSaramIntergalactic ship (IZhO19_xorsum)C++20
0 / 100
49 ms2372 KiB
#include <bits/stdc++.h>

using namespace std;

#define int long long

const int mod = 1e9 + 7, M = 1000, V = 128;

int now[M][V],now1[M][V],su[M];

signed main()
{
	int n;
	cin>>n;
	int a[n];
	for (int i=0;i<n;i++)
		cin>>a[i],now[i][a[i]]=1;
	int q;
	cin>>q;
	while (q--)
	{
		int l,r,x;
		cin>>l>>r>>x;
		for (int i=l-1;i<r;i++)
		{
			for (int y=0;y<V;y++)
				now1[i][x^y]+=now[i][y],now1[i][x^y]-=(now1[i][x^y]>=mod?mod:0);
			for (int y=0;y<V;y++)
				now[i][y]+=now1[i][y],now[i][y]-=(now[i][y]>=mod?mod:0),now1[i][y]=0;
		}
	}
	int ans=0;
	for (int i=0;i<n;i++)
		for (int y=0;y<V;y++)
			su[i]=(su[i]+now[i][y]*y)%mod,ans=(ans+now[i][y]*y*y%mod*(i+1)*(n-i))%mod;
	for (int i=0;i<n;i++)
		for (int j=i+1;j<n;j++)
			ans=(ans+2*su[i]*su[j]%mod*(i+1)*(n-j))%mod;
	cout<<ans<<endl;

	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...