답안 #1071521

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1071521 2024-08-23T08:05:24 Z Gromp15 Vision Program (IOI19_vision) C++17
100 / 100
13 ms 1788 KB
#include "vision.h"
#include <bits/stdc++.h>
#define ll long long
#define ar array
#define sz(x) (int)x.size()
#define all(x) x.begin(), x.end()
using namespace std;
template<typename T> bool ckmin(T &a, const T &b) { return a > b ? a = b, 1 : 0; }
template<typename T> bool ckmax(T &a, const T &b) { return a < b ? a = b, 1 : 0; }
 

void construct_network(int H, int W, int K) {
	vector<int> v;
	{
		vector<int> val(H), val2(H);
		for (int i = 0; i < H; i++) {
			vector<int> cur;
			for (int j = 0; j < W; j++) {
				cur.emplace_back(i*W+j);
			}
			val[i] = val2[i] = add_or(cur);
		}
		for (int i = 1; i < H; i++) val[i] = add_or({val[i], val[i-1]});
		for (int i = H-2; i >= 0; i--) val2[i] = add_or({val2[i], val2[i+1]});
		for (int i = 0; i < H; i++) v.emplace_back(add_and({val[i], val2[i]}));
	}
	{
		vector<int> val(W), val2(W);
		for (int j = 0; j < W; j++) {
			vector<int> cur;
			for (int i = 0; i < H; i++) {
				cur.emplace_back(i*W+j);
			}
			val[j] = val2[j] = add_or(cur);
		}
		for (int i = 1; i < W; i++) val[i] = add_or({val[i], val[i-1]});
		for (int i = W-2; i >= 0; i--) val2[i] = add_or({val2[i], val2[i+1]});
		for (int i = 0; i < W; i++) v.emplace_back(add_and({val[i], val2[i]}));
	}
	int Z = add_and({0, add_not(0)}), O = add_not({Z});
	vector<int> val;
	for (int i = 0; i < 9; i++) val.push_back(add_or({Z}));
	int sum = 0;
	for (int x : v) {
		sum++;
		for (int j = 0; j < 9; j++) {
			if ((1 << j) > sum) break;
			int orig = val[j];
			val[j] = add_xor({val[j], x});
			x = add_and({x, orig});
		}
	}
	vector<int> ans(9);
	for (int i = 0; i < 9; i++) { 
		if ((K + 2) >> i & 1) ans[i] = add_or({O});
		else ans[i] = add_or({Z});
	}
	vector<int> ret;
	for (int i = 0; i < 9; i++) ret.push_back(add_xor({val[i], ans[i]}));
	add_not(add_or(ret));
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 432 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 0 ms 344 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 432 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 1 ms 348 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 0 ms 436 KB Output is correct
17 Correct 1 ms 348 KB Output is correct
18 Correct 1 ms 344 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 432 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 0 ms 344 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 432 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 1 ms 348 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 0 ms 436 KB Output is correct
17 Correct 1 ms 348 KB Output is correct
18 Correct 1 ms 344 KB Output is correct
19 Correct 1 ms 348 KB Output is correct
20 Correct 0 ms 348 KB Output is correct
21 Correct 0 ms 348 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
23 Correct 1 ms 344 KB Output is correct
24 Correct 0 ms 348 KB Output is correct
25 Correct 0 ms 348 KB Output is correct
26 Correct 0 ms 348 KB Output is correct
27 Correct 1 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 432 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 0 ms 344 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 432 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 1 ms 348 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 0 ms 436 KB Output is correct
17 Correct 1 ms 348 KB Output is correct
18 Correct 1 ms 344 KB Output is correct
19 Correct 1 ms 348 KB Output is correct
20 Correct 0 ms 348 KB Output is correct
21 Correct 0 ms 348 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
23 Correct 1 ms 344 KB Output is correct
24 Correct 0 ms 348 KB Output is correct
25 Correct 0 ms 348 KB Output is correct
26 Correct 0 ms 348 KB Output is correct
27 Correct 1 ms 348 KB Output is correct
28 Correct 1 ms 348 KB Output is correct
29 Correct 1 ms 408 KB Output is correct
30 Correct 1 ms 348 KB Output is correct
31 Correct 1 ms 348 KB Output is correct
32 Correct 0 ms 348 KB Output is correct
33 Correct 1 ms 352 KB Output is correct
34 Correct 1 ms 348 KB Output is correct
35 Correct 1 ms 436 KB Output is correct
36 Correct 1 ms 440 KB Output is correct
37 Correct 1 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 432 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 0 ms 344 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 432 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 1 ms 348 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 0 ms 436 KB Output is correct
17 Correct 1 ms 348 KB Output is correct
18 Correct 1 ms 344 KB Output is correct
19 Correct 1 ms 348 KB Output is correct
20 Correct 0 ms 348 KB Output is correct
21 Correct 0 ms 348 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
23 Correct 1 ms 344 KB Output is correct
24 Correct 0 ms 348 KB Output is correct
25 Correct 0 ms 348 KB Output is correct
26 Correct 0 ms 348 KB Output is correct
27 Correct 1 ms 348 KB Output is correct
28 Correct 1 ms 348 KB Output is correct
29 Correct 1 ms 408 KB Output is correct
30 Correct 1 ms 348 KB Output is correct
31 Correct 1 ms 348 KB Output is correct
32 Correct 0 ms 348 KB Output is correct
33 Correct 1 ms 352 KB Output is correct
34 Correct 1 ms 348 KB Output is correct
35 Correct 1 ms 436 KB Output is correct
36 Correct 1 ms 440 KB Output is correct
37 Correct 1 ms 348 KB Output is correct
38 Correct 3 ms 860 KB Output is correct
39 Correct 1 ms 348 KB Output is correct
40 Correct 1 ms 348 KB Output is correct
41 Correct 3 ms 600 KB Output is correct
42 Correct 2 ms 604 KB Output is correct
43 Correct 4 ms 860 KB Output is correct
44 Correct 2 ms 860 KB Output is correct
45 Correct 3 ms 832 KB Output is correct
46 Correct 3 ms 860 KB Output is correct
47 Correct 2 ms 860 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 604 KB Output is correct
2 Correct 2 ms 604 KB Output is correct
3 Correct 1 ms 600 KB Output is correct
4 Correct 1 ms 604 KB Output is correct
5 Correct 2 ms 600 KB Output is correct
6 Correct 1 ms 604 KB Output is correct
7 Correct 1 ms 604 KB Output is correct
8 Correct 1 ms 604 KB Output is correct
9 Correct 2 ms 604 KB Output is correct
10 Correct 3 ms 692 KB Output is correct
11 Correct 3 ms 692 KB Output is correct
12 Correct 1 ms 604 KB Output is correct
13 Correct 1 ms 600 KB Output is correct
14 Correct 1 ms 604 KB Output is correct
15 Correct 1 ms 604 KB Output is correct
16 Correct 2 ms 604 KB Output is correct
17 Correct 2 ms 600 KB Output is correct
18 Correct 3 ms 600 KB Output is correct
19 Correct 1 ms 604 KB Output is correct
20 Correct 1 ms 600 KB Output is correct
21 Correct 0 ms 348 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 3 ms 604 KB Output is correct
4 Correct 1 ms 616 KB Output is correct
5 Correct 1 ms 604 KB Output is correct
6 Correct 3 ms 600 KB Output is correct
7 Correct 2 ms 604 KB Output is correct
8 Correct 4 ms 600 KB Output is correct
9 Correct 2 ms 604 KB Output is correct
10 Correct 4 ms 604 KB Output is correct
11 Correct 3 ms 604 KB Output is correct
12 Correct 3 ms 604 KB Output is correct
13 Correct 2 ms 604 KB Output is correct
14 Correct 2 ms 600 KB Output is correct
15 Correct 3 ms 604 KB Output is correct
16 Correct 2 ms 604 KB Output is correct
17 Correct 1 ms 604 KB Output is correct
18 Correct 3 ms 604 KB Output is correct
19 Correct 2 ms 716 KB Output is correct
20 Correct 9 ms 1184 KB Output is correct
21 Correct 5 ms 1236 KB Output is correct
22 Correct 4 ms 1240 KB Output is correct
23 Correct 4 ms 1208 KB Output is correct
24 Correct 4 ms 1236 KB Output is correct
25 Correct 6 ms 1236 KB Output is correct
26 Correct 4 ms 1240 KB Output is correct
27 Correct 8 ms 1644 KB Output is correct
28 Correct 7 ms 1752 KB Output is correct
29 Correct 7 ms 1788 KB Output is correct
30 Correct 7 ms 1752 KB Output is correct
31 Correct 9 ms 1752 KB Output is correct
32 Correct 1 ms 344 KB Output is correct
33 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 8 ms 1752 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 1 ms 604 KB Output is correct
4 Correct 2 ms 688 KB Output is correct
5 Correct 2 ms 604 KB Output is correct
6 Correct 2 ms 604 KB Output is correct
7 Correct 4 ms 1240 KB Output is correct
8 Correct 5 ms 1240 KB Output is correct
9 Correct 7 ms 1752 KB Output is correct
10 Correct 1 ms 348 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 432 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 0 ms 344 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 432 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 1 ms 348 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 0 ms 436 KB Output is correct
17 Correct 1 ms 348 KB Output is correct
18 Correct 1 ms 344 KB Output is correct
19 Correct 1 ms 348 KB Output is correct
20 Correct 0 ms 348 KB Output is correct
21 Correct 0 ms 348 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
23 Correct 1 ms 344 KB Output is correct
24 Correct 0 ms 348 KB Output is correct
25 Correct 0 ms 348 KB Output is correct
26 Correct 0 ms 348 KB Output is correct
27 Correct 1 ms 348 KB Output is correct
28 Correct 1 ms 348 KB Output is correct
29 Correct 1 ms 408 KB Output is correct
30 Correct 1 ms 348 KB Output is correct
31 Correct 1 ms 348 KB Output is correct
32 Correct 0 ms 348 KB Output is correct
33 Correct 1 ms 352 KB Output is correct
34 Correct 1 ms 348 KB Output is correct
35 Correct 1 ms 436 KB Output is correct
36 Correct 1 ms 440 KB Output is correct
37 Correct 1 ms 348 KB Output is correct
38 Correct 3 ms 860 KB Output is correct
39 Correct 1 ms 348 KB Output is correct
40 Correct 1 ms 348 KB Output is correct
41 Correct 3 ms 600 KB Output is correct
42 Correct 2 ms 604 KB Output is correct
43 Correct 4 ms 860 KB Output is correct
44 Correct 2 ms 860 KB Output is correct
45 Correct 3 ms 832 KB Output is correct
46 Correct 3 ms 860 KB Output is correct
47 Correct 2 ms 860 KB Output is correct
48 Correct 3 ms 604 KB Output is correct
49 Correct 2 ms 604 KB Output is correct
50 Correct 1 ms 600 KB Output is correct
51 Correct 1 ms 604 KB Output is correct
52 Correct 2 ms 600 KB Output is correct
53 Correct 1 ms 604 KB Output is correct
54 Correct 1 ms 604 KB Output is correct
55 Correct 1 ms 604 KB Output is correct
56 Correct 2 ms 604 KB Output is correct
57 Correct 3 ms 692 KB Output is correct
58 Correct 3 ms 692 KB Output is correct
59 Correct 1 ms 604 KB Output is correct
60 Correct 1 ms 600 KB Output is correct
61 Correct 1 ms 604 KB Output is correct
62 Correct 1 ms 604 KB Output is correct
63 Correct 2 ms 604 KB Output is correct
64 Correct 2 ms 600 KB Output is correct
65 Correct 3 ms 600 KB Output is correct
66 Correct 1 ms 604 KB Output is correct
67 Correct 1 ms 600 KB Output is correct
68 Correct 0 ms 348 KB Output is correct
69 Correct 0 ms 348 KB Output is correct
70 Correct 1 ms 348 KB Output is correct
71 Correct 0 ms 348 KB Output is correct
72 Correct 3 ms 604 KB Output is correct
73 Correct 1 ms 616 KB Output is correct
74 Correct 1 ms 604 KB Output is correct
75 Correct 3 ms 600 KB Output is correct
76 Correct 2 ms 604 KB Output is correct
77 Correct 4 ms 600 KB Output is correct
78 Correct 2 ms 604 KB Output is correct
79 Correct 4 ms 604 KB Output is correct
80 Correct 3 ms 604 KB Output is correct
81 Correct 3 ms 604 KB Output is correct
82 Correct 2 ms 604 KB Output is correct
83 Correct 2 ms 600 KB Output is correct
84 Correct 3 ms 604 KB Output is correct
85 Correct 2 ms 604 KB Output is correct
86 Correct 1 ms 604 KB Output is correct
87 Correct 3 ms 604 KB Output is correct
88 Correct 2 ms 716 KB Output is correct
89 Correct 9 ms 1184 KB Output is correct
90 Correct 5 ms 1236 KB Output is correct
91 Correct 4 ms 1240 KB Output is correct
92 Correct 4 ms 1208 KB Output is correct
93 Correct 4 ms 1236 KB Output is correct
94 Correct 6 ms 1236 KB Output is correct
95 Correct 4 ms 1240 KB Output is correct
96 Correct 8 ms 1644 KB Output is correct
97 Correct 7 ms 1752 KB Output is correct
98 Correct 7 ms 1788 KB Output is correct
99 Correct 7 ms 1752 KB Output is correct
100 Correct 9 ms 1752 KB Output is correct
101 Correct 1 ms 344 KB Output is correct
102 Correct 0 ms 348 KB Output is correct
103 Correct 8 ms 1752 KB Output is correct
104 Correct 1 ms 344 KB Output is correct
105 Correct 1 ms 604 KB Output is correct
106 Correct 2 ms 688 KB Output is correct
107 Correct 2 ms 604 KB Output is correct
108 Correct 2 ms 604 KB Output is correct
109 Correct 4 ms 1240 KB Output is correct
110 Correct 5 ms 1240 KB Output is correct
111 Correct 7 ms 1752 KB Output is correct
112 Correct 1 ms 348 KB Output is correct
113 Correct 1 ms 348 KB Output is correct
114 Correct 13 ms 1632 KB Output is correct
115 Correct 2 ms 600 KB Output is correct
116 Correct 2 ms 604 KB Output is correct
117 Correct 4 ms 1024 KB Output is correct
118 Correct 6 ms 1076 KB Output is correct
119 Correct 7 ms 1752 KB Output is correct
120 Correct 13 ms 1752 KB Output is correct
121 Correct 7 ms 1752 KB Output is correct
122 Correct 7 ms 1752 KB Output is correct
123 Correct 7 ms 1748 KB Output is correct
124 Correct 7 ms 1752 KB Output is correct
125 Correct 8 ms 1752 KB Output is correct
126 Correct 7 ms 1748 KB Output is correct
127 Correct 7 ms 1752 KB Output is correct
128 Correct 8 ms 1748 KB Output is correct