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...