Submission #43205

#TimeUsernameProblemLanguageResultExecution timeMemory
43205baactree즐거운 사진 수집 (JOI13_collecting)C++14
100 / 100
2142 ms44488 KiB
#include <bits/stdc++.h> using namespace std; int n, q; int w[2][21], o[2][1 << 20], s[2][21][1 << 20]; int main() { scanf("%d%d", &n, &q); long long cnt = 0; for (int i = 1; i <= n; i++)w[0][i] = w[1][i] = 1 << (n - i); while (q--) { int a, b; scanf("%d%d", &a, &b);b--; for (int i = 1, d = 2,k=0; i <= n;cnt+=w[!a][i]*k, i++, d <<= 1,k=0) { if (!(s[a][i][b / d] % d))w[a][i]--, k = 1; s[a][i][b / d] += o[a][b] ? -1 : 1; if (!(s[a][i][b / d] % d))w[a][i]++, k = -1; } o[a][b] ^= 1; printf("%lld\n", cnt * 4 + 1); } return 0; }

Compilation message (stderr)

collecting.cpp: In function 'int main()':
collecting.cpp:6:23: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d", &n, &q);
                       ^
collecting.cpp:11:24: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%d", &a, &b);b--;
                        ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...