Submission #603086

# Submission time Handle Problem Language Result Execution time Memory
603086 2022-07-23T15:07:44 Z Clan328 Vision Program (IOI19_vision) C++17
66 / 100
22 ms 2716 KB
#include <bits/stdc++.h>

using namespace std;

#define pb push_back

int add_and(std::vector<int> Ns);

int add_or(std::vector<int> Ns);

int add_xor(std::vector<int> Ns);

int add_not(int N);

int transformCoords(int W, int i, int j) {
	return i*W+j;
}

bool isValid(int H, int W, int i, int j) {
	if (i < 0 || j < 0 || i >= H || j >= W) return false;
	return true;
}

int idx;

int calc1(int H, int W) {
	vector<int> Ns;
	// int idx = H*W;
	for (int i = 0; i < H; i++) {
		vector<int> arr;
		for (int j = 0; j < W; j++) arr.pb(i*W+j);
		add_or(arr);
		idx++;
	}

	int og = idx;
	for (int i = 0; i < H-1; i++) {
		add_and({og-H+i, og-H+i+1});
		Ns.pb(idx);
		idx++;
	}
	int consecOr1 = add_or(Ns);
	idx++;

	Ns = vector<int>();
	for (int i = 0; i < W; i++) {
		vector<int> arr;
		for (int j = 0; j < H; j++) arr.pb(j*W+i);
		add_or(arr);
		add_xor(arr);
		add_xor({idx, idx+1});
		Ns.pb(idx+2);
		idx+=3;
	}

	int consecXor1 = add_or(Ns);
	// for (int i = 0; i < Ns.size(); i++) cout << Ns[i] << " ";
	// 	cout << endl;
	idx += 2;
	return add_and({consecOr1, consecXor1});
}

int calc2(int H, int W) {
	vector<int> Ns;
	// int idx = H*W;
	for (int i = 0; i < W; i++) {
		vector<int> arr;
		for (int j = 0; j < H; j++) arr.pb(j*W+i);
		add_or(arr);
		idx++;
	}

	int og = idx;
	for (int i = 0; i < W-1; i++) {
		add_and({og-W+i, og-W+i+1});
		Ns.pb(idx);
		idx++;
	}
	int consecOr1 = add_or(Ns);
	idx++;

	Ns = vector<int>();
	for (int i = 0; i < H; i++) {
		vector<int> arr;
		for (int j = 0; j < W; j++) arr.pb(i*W+j);
		add_or(arr);
		add_xor(arr);
		add_xor({idx, idx+1});
		Ns.pb(idx+2);
		idx+=3;
	}

	int consecXor1 = add_or(Ns);
	idx += 2;
	return add_and({consecOr1, consecXor1});
}

void construct_network(int H, int W, int K) {
	if (min(H, W) <= 30) {
		vector<int> Ns;
		int idx = 0;
		for (int x = 0; x < H; x++) {
			for (int y = 0; y < W; y++) {
				vector<int> arr;
				for (int i = 0; i <= K; i++) {
					if (isValid(H, W, i+x, K-i+y)) {
						arr.pb(transformCoords(W, i+x, K-i+y));
					}
					if (isValid(H, W, x-i, K-i+y) && x-i != i+x) {
						arr.pb(transformCoords(W, x-i, K-i+y));
					}
				}
				if (arr.size()) {
					add_or({transformCoords(W, x, y)});
					add_or(arr);
					idx += 2;
				}
			}
		}
	 
		// for (int i = 0; i < Ns.size(); i++) {
		// 	cout << Ns[i] << " x ";
		// }
		// cout << endl;
	 
		for (int i = 0; i < idx; i+=2) {
			Ns.pb(add_and({H*W+i, H*W+i+1}));
		}
	 
		add_or(Ns);
		return;
	} else if (K == 1) {
		idx = H*W;
		add_or({calc1(H, W) , calc2(H, W)});
	} else {
		vector<int> Ns;
		int idx = 0;
		for (int i = 0; i <= K; i++) {
			if (!isValid(H, W, i, K-i)) continue; 
			add_and({0, transformCoords(W, i, K-i)});
			Ns.pb(H*W+idx);
			idx++;
		}

		add_or(Ns); 
	}
	// cout << idx << endl;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 1 ms 212 KB Output is correct
9 Correct 1 ms 212 KB Output is correct
10 Correct 0 ms 212 KB Output is correct
11 Correct 0 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 0 ms 212 KB Output is correct
15 Correct 0 ms 212 KB Output is correct
16 Correct 0 ms 212 KB Output is correct
17 Correct 0 ms 212 KB Output is correct
18 Correct 0 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 1 ms 212 KB Output is correct
9 Correct 1 ms 212 KB Output is correct
10 Correct 0 ms 212 KB Output is correct
11 Correct 0 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 0 ms 212 KB Output is correct
15 Correct 0 ms 212 KB Output is correct
16 Correct 0 ms 212 KB Output is correct
17 Correct 0 ms 212 KB Output is correct
18 Correct 0 ms 212 KB Output is correct
19 Correct 0 ms 212 KB Output is correct
20 Correct 0 ms 212 KB Output is correct
21 Correct 1 ms 212 KB Output is correct
22 Correct 1 ms 212 KB Output is correct
23 Correct 1 ms 212 KB Output is correct
24 Correct 0 ms 212 KB Output is correct
25 Correct 0 ms 212 KB Output is correct
26 Correct 0 ms 212 KB Output is correct
27 Correct 0 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 1 ms 212 KB Output is correct
9 Correct 1 ms 212 KB Output is correct
10 Correct 0 ms 212 KB Output is correct
11 Correct 0 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 0 ms 212 KB Output is correct
15 Correct 0 ms 212 KB Output is correct
16 Correct 0 ms 212 KB Output is correct
17 Correct 0 ms 212 KB Output is correct
18 Correct 0 ms 212 KB Output is correct
19 Correct 0 ms 212 KB Output is correct
20 Correct 0 ms 212 KB Output is correct
21 Correct 1 ms 212 KB Output is correct
22 Correct 1 ms 212 KB Output is correct
23 Correct 1 ms 212 KB Output is correct
24 Correct 0 ms 212 KB Output is correct
25 Correct 0 ms 212 KB Output is correct
26 Correct 0 ms 212 KB Output is correct
27 Correct 0 ms 212 KB Output is correct
28 Correct 3 ms 596 KB Output is correct
29 Correct 1 ms 212 KB Output is correct
30 Correct 0 ms 212 KB Output is correct
31 Correct 0 ms 212 KB Output is correct
32 Correct 1 ms 340 KB Output is correct
33 Correct 2 ms 468 KB Output is correct
34 Correct 3 ms 596 KB Output is correct
35 Correct 2 ms 596 KB Output is correct
36 Correct 1 ms 340 KB Output is correct
37 Correct 1 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 1 ms 212 KB Output is correct
9 Correct 1 ms 212 KB Output is correct
10 Correct 0 ms 212 KB Output is correct
11 Correct 0 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 0 ms 212 KB Output is correct
15 Correct 0 ms 212 KB Output is correct
16 Correct 0 ms 212 KB Output is correct
17 Correct 0 ms 212 KB Output is correct
18 Correct 0 ms 212 KB Output is correct
19 Correct 0 ms 212 KB Output is correct
20 Correct 0 ms 212 KB Output is correct
21 Correct 1 ms 212 KB Output is correct
22 Correct 1 ms 212 KB Output is correct
23 Correct 1 ms 212 KB Output is correct
24 Correct 0 ms 212 KB Output is correct
25 Correct 0 ms 212 KB Output is correct
26 Correct 0 ms 212 KB Output is correct
27 Correct 0 ms 212 KB Output is correct
28 Correct 3 ms 596 KB Output is correct
29 Correct 1 ms 212 KB Output is correct
30 Correct 0 ms 212 KB Output is correct
31 Correct 0 ms 212 KB Output is correct
32 Correct 1 ms 340 KB Output is correct
33 Correct 2 ms 468 KB Output is correct
34 Correct 3 ms 596 KB Output is correct
35 Correct 2 ms 596 KB Output is correct
36 Correct 1 ms 340 KB Output is correct
37 Correct 1 ms 212 KB Output is correct
38 Incorrect 0 ms 212 KB on inputs (8, 61), (22, 97), expected 1, but computed 0
39 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 1 ms 340 KB Output is correct
10 Correct 0 ms 212 KB Output is correct
11 Correct 1 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 0 ms 212 KB Output is correct
15 Correct 1 ms 340 KB Output is correct
16 Correct 1 ms 340 KB Output is correct
17 Correct 1 ms 340 KB Output is correct
18 Correct 1 ms 340 KB Output is correct
19 Correct 0 ms 212 KB Output is correct
20 Correct 0 ms 212 KB Output is correct
21 Correct 0 ms 212 KB Output is correct
22 Correct 0 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 5 ms 1104 KB Output is correct
4 Correct 10 ms 1460 KB Output is correct
5 Correct 8 ms 1228 KB Output is correct
6 Correct 4 ms 596 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 4 ms 680 KB Output is correct
9 Correct 1 ms 212 KB Output is correct
10 Correct 0 ms 212 KB Output is correct
11 Correct 1 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 1 ms 340 KB Output is correct
14 Correct 1 ms 340 KB Output is correct
15 Correct 1 ms 212 KB Output is correct
16 Correct 0 ms 212 KB Output is correct
17 Correct 1 ms 340 KB Output is correct
18 Correct 1 ms 340 KB Output is correct
19 Correct 1 ms 212 KB Output is correct
20 Correct 11 ms 1448 KB Output is correct
21 Correct 1 ms 212 KB Output is correct
22 Correct 0 ms 300 KB Output is correct
23 Correct 0 ms 212 KB Output is correct
24 Correct 15 ms 1620 KB Output is correct
25 Correct 1 ms 212 KB Output is correct
26 Correct 0 ms 212 KB Output is correct
27 Correct 22 ms 2716 KB Output is correct
28 Correct 0 ms 212 KB Output is correct
29 Correct 1 ms 212 KB Output is correct
30 Correct 1 ms 212 KB Output is correct
31 Correct 0 ms 212 KB Output is correct
32 Correct 1 ms 304 KB Output is correct
33 Correct 0 ms 300 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 22 ms 2660 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 5 ms 976 KB Output is correct
4 Correct 5 ms 672 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
7 Correct 12 ms 1492 KB Output is correct
8 Correct 12 ms 1492 KB Output is correct
9 Correct 22 ms 2628 KB Output is correct
10 Correct 0 ms 212 KB Output is correct
11 Correct 1 ms 296 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 1 ms 212 KB Output is correct
9 Correct 1 ms 212 KB Output is correct
10 Correct 0 ms 212 KB Output is correct
11 Correct 0 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 0 ms 212 KB Output is correct
15 Correct 0 ms 212 KB Output is correct
16 Correct 0 ms 212 KB Output is correct
17 Correct 0 ms 212 KB Output is correct
18 Correct 0 ms 212 KB Output is correct
19 Correct 0 ms 212 KB Output is correct
20 Correct 0 ms 212 KB Output is correct
21 Correct 1 ms 212 KB Output is correct
22 Correct 1 ms 212 KB Output is correct
23 Correct 1 ms 212 KB Output is correct
24 Correct 0 ms 212 KB Output is correct
25 Correct 0 ms 212 KB Output is correct
26 Correct 0 ms 212 KB Output is correct
27 Correct 0 ms 212 KB Output is correct
28 Correct 3 ms 596 KB Output is correct
29 Correct 1 ms 212 KB Output is correct
30 Correct 0 ms 212 KB Output is correct
31 Correct 0 ms 212 KB Output is correct
32 Correct 1 ms 340 KB Output is correct
33 Correct 2 ms 468 KB Output is correct
34 Correct 3 ms 596 KB Output is correct
35 Correct 2 ms 596 KB Output is correct
36 Correct 1 ms 340 KB Output is correct
37 Correct 1 ms 212 KB Output is correct
38 Incorrect 0 ms 212 KB on inputs (8, 61), (22, 97), expected 1, but computed 0
39 Halted 0 ms 0 KB -