Submission #1187679

#TimeUsernameProblemLanguageResultExecution timeMemory
1187679JooDdae즐거운 사진 수집 (JOI13_collecting)C++20
100 / 100
853 ms44504 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; #define mid ((l+r) >> 1) int n, m, t[2][1 << 22], c[2][20]; void update(int q, int b, int lev = 0, int node = 1, int l = 0, int r = (1 << n)-1) { if(b < l || r < b) return; if(l == r) { t[q][node] = !t[q][node]; return; } update(q, b, lev+1, node*2, l, mid), update(q, b, lev+1, node*2+1, mid+1, r); c[q][lev] -= t[q][node] == 2; t[q][node] = (t[q][node*2] != 2 && t[q][node*2+1] != 2 && t[q][node*2] == t[q][node*2+1] ? t[q][node*2] : 2); c[q][lev] += t[q][node] == 2; } int main() { cin.tie(0)->sync_with_stdio(0); cin >> n >> m; while(m--) { int q, b; cin >> q >> b; update(q, b-1); ll ans = 1; for(int i=0;i<n;i++) ans += (c[0][i] * (1ll << i) + c[1][i] * ((1ll << i) - c[0][i])) * 4; cout << ans << "\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...