Submission #1156286

#TimeUsernameProblemLanguageResultExecution timeMemory
1156286MuhammadSaramIntergalactic ship (IZhO19_xorsum)C++20
9 / 100
1963 ms1212 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<=10) { 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++) { for (int i=0;i<n;i++) { ans=(ans+v[i][m]*(n-i)*(i+1)*v[i][m])%mod; for (int j=i+1;j<n;j++) ans=(ans+v[i][m]*v[j][m]*(n-j)*(i+1)*2)%mod; } } cout<<ans<<endl; } else { int now[n][V]={}; for (int i=0;i<n;i++) now[i][a[i]]=1; while (q--) { int l,r,x; cin>>l>>r>>x; for (int i=0;i<n;i++) { if (i==l-1) { int ot[V]; for (int j=0;j<V;j++) ot[j^x]=now[i][j]; for (int j=0;j<V;j++) now[i][j]=(now[i][j]+ot[j])%mod; } else { for (int j=0;j<V;j++) now[i][j]=now[i][j]*2%mod; } } } int ans=0; for (int i=0;i<n;i++) { for (int x=0;x<V;x++) { ans=(ans+x*x*(i+1)*(n-i))%mod; for (int j=i+1;j<n;j++) for (int y=0;y<V;y++) ans=(ans+x*y*2*(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...