Submission #651203

#TimeUsernameProblemLanguageResultExecution timeMemory
651203willychanIntergalactic ship (IZhO19_xorsum)C++14
17 / 100
2069 ms2236 KiB
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
//#include<bits/extc++.h>
//__gnu_pbds::
const int MOD = 1e9+7;

struct q{
	int l,r;
	short x;
};
int n;
short arr[1005];

int get(){
	int p[1005]={0};
	int u[1005]={0};
	int t[1005]={0};
	for(int i=1;i<=n;i++){
		p[i] = (p[i-1]+arr[i])%MOD;
		u[i] =( u[i-1]+((1LL*p[i]*p[i])%MOD))%MOD;
		t[i] = (t[i-1]+p[i])%MOD;
	}
	int ans=0;
	for(int l=1;l<=n;l++){
		ans+=(1LL*(n-l+1)*((1LL*p[l-1]*p[l-1])%MOD))%MOD;
		ans%=MOD;
		ans+=(u[n]-u[l-1])%MOD;
		ans%=MOD;
		ans-=(2LL*p[l-1]*(t[n]-t[l-1]))%MOD;
		ans%=MOD;
		if(ans<0) ans+=MOD;
	}
	return ans;
}

int main(){
	ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	cin>>n;
	short og[n+1];
	for(int i=1;i<=n;i++){
		cin>>og[i];
		arr[i] =og[i];
	}
	int Q;
	cin>>Q;
	q qu[Q];
	for(int i=0;i<Q;i++){
		cin>>qu[i].l>>qu[i].r>>qu[i].x;	
	}
	int ans=0;
	for(int s=0;s<(1<<Q);s++){
		for(int i=0;i<Q;i++){
			if((s>>i)&1){
				for(int r = qu[i].l;r<=qu[i].r;r++){
					arr[r]^=qu[i].x;
				}
			}
		}
		ans+=get();
		ans%=MOD;
		for(int i=1;i<=n;i++) arr[i] = og[i];
	}
	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...