Submission #956499

#TimeUsernameProblemLanguageResultExecution timeMemory
956499Darren0724Intergalactic ship (IZhO19_xorsum)C++17
17 / 100
2066 ms4188 KiB
#include <bits/stdc++.h>
using namespace std;
#define LCBorz ios_base::sync_with_stdio(false); cin.tie(0);
#define int long long
#define all(x) x.begin(), x.end()
#define endl '\n'
const int N=200005;
const int INF=1e18;
const int mod=1e9+7;
int n,ans=0;
vector<int> v(N);
void cal(){
    int total=0;
    for(int i=0;i<n;i++){
        int cnt=0;
        for(int j=i;j<n;j++){
            cnt+=v[j];
            total+=cnt*cnt;
            total%=mod;
        }
    } 
    ans+=total;
    ans%=mod;
}
int32_t main() {
    LCBorz;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>v[i];
    }
    int q;cin>>q;
    vector<int> a(q),b(q),c(q);
    for(int i=0;i<q;i++){
        cin>>a[i]>>b[i]>>c[i];
    }
    for(int mask=0;mask<(1<<q);mask++){
        for(int i=0;i<q;i++){
            if(mask&(1<<i)){
                for(int j=a[i]-1;j<b[i];j++){
                    v[j]^=c[i];
                }
            }
        }
        cal();
        for(int i=0;i<q;i++){
            if(mask&(1<<i)){
                for(int j=a[i]-1;j<b[i];j++){
                    v[j]^=c[i];
                }
            }
        }
    }
    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...