Submission #1156295

#TimeUsernameProblemLanguageResultExecution timeMemory
1156295MuhammadSaramIntergalactic ship (IZhO19_xorsum)C++20
0 / 100
572 ms246648 KiB
#include <bits/stdc++.h>

using namespace std;

#define int long long

const int mod = 1e9 + 7, V = 32;

signed main()
{
	int n;
	cin>>n;
	int a[n];
	for (int i=0;i<n;i++)
		cin>>a[i];
	int q;
	cin>>q;
	if (q<=20)
	{
		int v[n][(1<<q)];
		for (int i=0;i<n;i++)
			v[i][0]=a[i];
		int l[q],r[q],x[q];
		for (int i=0;i<q;i++)
			cin>>l[i]>>r[i]>>x[i];
		for (int m=1;m<(1<<q);m++)
		{
			int b=31-__builtin_clz(m);
			for (int i=0;i<n;i++)
				v[i][m]=v[i][m^(1<<b)];
			for (int i=l[b]-1;i<r[b];i++)
				v[i][m]^=x[b];
		}
		int ans=0;
		for (int m=0;m<(1<<q);m++)
		{
			int pre[n],suf[n];
			pre[0]=v[0][m];
			for (int i=1;i<n;i++)
				pre[i]=pre[i-1]+v[i][m]*(i+1);
			suf[n-1]=v[n-1][m];
			for (int i=n-2;i>=0;i--)
				suf[i]=suf[i+1]+v[i][m]*(n-i);
			for (int i=0;i+1<n;i++)
				ans=(ans+pre[i]*suf[i+1]*2)%mod;
			for (int i=0;i<n;i++)
				ans=(ans+v[i][m]*(n-i)*(i+1)*v[i][m])%mod;
		}
		cout<<ans<<endl;
	}
	else
		cout<<0<<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...