Submission #1126765

#TimeUsernameProblemLanguageResultExecution timeMemory
1126765koukirocksIntergalactic ship (IZhO19_xorsum)C++20
0 / 100
2092 ms1604 KiB
#include<bits/stdc++.h>
#define speed ios_base::sync_with_stdio(0);cin.tie(0)
#define F first
#define S second

using namespace std;
template<typename T>
using vvector = vector<vector<T>>;
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
const ll INF=0x3f3f3f3f;
const ll P=1e9+7;

int main() {
    speed;
    int n;
    cin>>n;
    vector<int> a(n+1);
    for (int i=1;i<=n;i++) {
        cin>>a[i];
    }
    int q;
    cin>>q;
    vector<pair<pii,int>> Q(q+1);
    for (int i=0;i<q;i++) {
        cin>>Q[i].F.F>>Q[i].F.S>>Q[i].S;
    }
    ll ans=0;
    for (int s=0;s<(1<<q);s++) {
        for (int i=0;i<q;i++) {
            if (s&(1<<s)) {
                for (int j=Q[i].F.F;j<=Q[i].F.S;j++) a[i]^=Q[i].S;
            }
        }
        vector<int> pre(n+1);
        for (int i=1;i<=n;i++) pre[i]=(pre[i-1]+a[i])%P;
        ll now=0;
        for (int i=1;i<=n;i++) {
            for (int j=i;j<=n;j++) {
                now+=(pre[j]-pre[i-1]+P)*(pre[j]-pre[i-1]+P)%P;
                now%=P;
            }
        }
        ans+=now;
        ans%=P;
        for (int i=0;i<q;i++) {
            if (s&(1<<s)) {
                for (int j=Q[i].F.F;j<=Q[i].F.S;j++) a[i]^=Q[i].S;
            }
        }
    }
    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...