Submission #43203

# Submission time Handle Problem Language Result Execution time Memory
43203 2018-03-10T14:42:57 Z baactree 즐거운 사진 수집 (JOI13_collecting) C++14
100 / 100
1551 ms 44640 KB
#include <bits/stdc++.h>
using namespace std;
namespace fio {
	const int BSIZE = 1 << 17;
	unsigned char buffer[BSIZE];
	unsigned char *p = buffer + BSIZE;
	inline unsigned char readChar() {
		if (p == buffer + BSIZE) {
			fread(buffer, 1, 1 << 17, stdin);
			p = buffer;
		}
		return *p++;
	}
	int readInt() {
		unsigned char c = readChar();
		while (c<'-')c = readChar();
		int ret = 0;
		do {
			ret = ret * 10 + c - '0';
			c = readChar();
		} while (c >= '-');
		return ret;
	}
}
int n, q;
int r[21], c[21];
int ro[1 << 20], co[1 << 20];
int rs[21][1 << 20], cs[21][1 << 20];
int main() {
	//scanf("%d%d", &n, &q);
	n = fio::readInt();
	q = fio::readInt();
	long long cnt = 0;
	for (int i = 1; i <= n; i++) 
		r[i] = c[i] = 1 << (n - i);
	while (q--) {
		int a, b;
		//scanf("%d%d", &a, &b);
		a = fio::readInt();
		b = fio::readInt();
		b--;
		if (a) {
			//col
			for (int i = 1, d = 2; i <= n; i++, d <<= 1) {
				int pre = cs[i][b / d];
				int now = co[b] ? pre - 1 : pre + 1;
				cs[i][b / d] = now;
				int k = 0;
				if (!(pre%d))c[i]--, k = 1;
				if (!(now%d))c[i]++, k = -1;
				cnt += r[i] * k;
			}
			co[b] ^= 1;
		}
		else {
			//row
			for (int i = 1, d = 2; i <= n; i++, d <<= 1) {
				int pre = rs[i][b / d];
				int now = ro[b] ? pre - 1 : pre + 1;
				rs[i][b / d] = now;
				int k = 0;
				if (!(pre%d))r[i]--, k = 1;
				if (!(now%d))r[i]++, k = -1;
				cnt += c[i] * k;
			}
			ro[b] ^= 1;
		}
		printf("%lld\n", cnt * 4 + 1);
	}
	return 0;
}

Compilation message

collecting.cpp: In function 'unsigned char fio::readChar()':
collecting.cpp:9:36: warning: ignoring return value of 'size_t fread(void*, size_t, size_t, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
    fread(buffer, 1, 1 << 17, stdin);
                                    ^
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 480 KB Output is correct
3 Correct 1 ms 480 KB Output is correct
4 Correct 2 ms 540 KB Output is correct
5 Correct 1 ms 540 KB Output is correct
6 Correct 1 ms 588 KB Output is correct
7 Correct 1 ms 588 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 788 KB Output is correct
2 Correct 2 ms 788 KB Output is correct
3 Correct 2 ms 788 KB Output is correct
4 Correct 2 ms 788 KB Output is correct
5 Correct 2 ms 788 KB Output is correct
6 Correct 2 ms 788 KB Output is correct
7 Correct 3 ms 796 KB Output is correct
8 Correct 2 ms 796 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1480 ms 44248 KB Output is correct
2 Correct 1551 ms 44248 KB Output is correct
3 Correct 1214 ms 44248 KB Output is correct
4 Correct 1411 ms 44640 KB Output is correct
5 Correct 1512 ms 44640 KB Output is correct
6 Correct 1305 ms 44640 KB Output is correct
7 Correct 1408 ms 44640 KB Output is correct
8 Correct 1496 ms 44640 KB Output is correct
9 Correct 1195 ms 44640 KB Output is correct
10 Correct 1249 ms 44640 KB Output is correct
11 Correct 1371 ms 44640 KB Output is correct
12 Correct 1548 ms 44640 KB Output is correct
13 Correct 1306 ms 44640 KB Output is correct