제출 #331921

#제출 시각아이디문제언어결과실행 시간메모리
331921keko37Intergalactic ship (IZhO19_xorsum)C++14
9 / 100
2053 ms1516 KiB
#include<bits/stdc++.h> using namespace std; const int MAXN = 1005; const int MAXQ = 200005; const int MOD = 1000000007; int n, q; int w[MAXN], lef[MAXQ], rig[MAXQ], val[MAXQ], sum[MAXN]; void upd (int mask) { for (int i = 0; i < q; i++) { if (mask & (1 << i)) { for (int pos = lef[i]; pos <= rig[i]; pos++) { w[pos] ^= val[i]; } } } } int calc (int mask) { upd(mask); for (int i = 0; i < n; i++) { if (i == 0) sum[i] = w[i]; else sum[i] = sum[i - 1] + w[i]; } int res = 0; for (int i = 0; i < n; i++) { for (int j = i; j < n; j++) { int val = sum[j]; if (i != 0) val -= sum[i - 1]; res = (res + val * val) % MOD; } } upd(mask); return res; } int main () { ios_base::sync_with_stdio(false); cin.tie(0); cin >> n; for (int i = 0; i < n; i++) { cin >> w[i]; } cin >> q; for (int i = 0; i < q; i++) { cin >> lef[i] >> rig[i] >> val[i]; lef[i]--; rig[i]--; } int sol = 0; for (int mask = 0; mask < (1 << q); mask++) { sol = (sol + calc(mask)) % MOD; } cout << sol; 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...