Submission #1132277

#TimeUsernameProblemLanguageResultExecution timeMemory
1132277stdfloatIntergalactic ship (IZhO19_xorsum)C++20
47 / 100
2095 ms1864 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; const int N = (int)1e5 + 1, md = (int)1e9 + 7; vector<int> pw(N, 1); ll MD(ll x) { return (x % md + md) % md; } int f(bool x, bool y, int a, int b, int c) { if (~a) { if (!a) return f(x, y, -1, b, c); return MD((ll)pw[a - 1] * MD(f(x, y, -1, b, c) + f(!x, !y, -1, b, c))); } else if (~b) return MD((ll)(b ? pw[b - 1] : x) * f(true, y, -1, -1, c)); else return (c ? pw[c - 1] : y); } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); for (int i = 1; i < N; i++) pw[i] = MD(pw[i - 1] << 1); int n; cin >> n; vector<int> a(n); for (auto &i : a) cin >> i; int q; cin >> q; int l[q], r[q], X[q]; for (int i = 0; i < q; i++) { cin >> l[i] >> r[i] >> X[i]; l[i]--; r[i]--; } int ans = 0; for (int x = 0; x < 8; x++) { for (int y = 0; y < 8; y++) { for (int i = 0; i < n; i++) { for (int j = i; j < n; j++) { int A = 0, B = 0, C = 0; for (int k = 0; k < q; k++) { bool tr1 = (X[k] >> x) & 1, tr2 = (X[k] >> y) & 1; bool ok1 = (l[k] <= i && i <= r[k]), ok2 = (l[k] <= j && j <= r[k]); A += (tr1 && tr2 && ok1 && ok2); B += (tr1 && ok1 && (!tr2 || !ok2)); C += (tr2 && ok2 && (!tr1 || !ok1)); } int z = 1 + (i != j); int vl = MD((ll)z * pw[x] * pw[y]); int pr = MD((ll)(i + 1) * (n - j)); int cnt = f((a[i] >> x) & 1, (a[j] >> y) & 1, A, B, C); ans = MD(ans + MD(MD(MD(vl * pr) * cnt) * pw[q - A - B - C])); } } } } cout << ans; }
#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...