#include "vision.h"
#include <bits/stdc++.h>
#define Loop(x,l,r) for (ll x = (l); x < (r); ++x)
#define LoopR(x,l,r) for (ll x = (r)-1; x >= (l); --x)
typedef long long ll;
typedef std::pair<int, int> pii;
typedef std::pair<ll , ll > pll;
using namespace std;
const int N = 40'010;
int h, w, k;
int n;
int nxt;
const int BITS = 9;
int get_n(int x, int y) { return 0 <= x && x < h && 0 <= y && y < w? x*w + y: -1;}
void ha(int a, int b, int &x, int &y)
{
// a^b a&b
add_xor({a, b});
add_and({a, b});
x = nxt;
y = nxt+1;
nxt += 2;
}
void fa(int a, int b, int c, int &x, int &y)
{
// a^b a^b^c a&b (a^b)&c (a&b)|((a^b)&c)
add_xor({a, b});
add_xor({nxt, c});
add_and({a, b});
add_and({nxt, c});
add_or({nxt+2, nxt+3});
x = nxt+1;
y = nxt+4;
nxt += 5;
}
void byte_add(int a[], int b[], int x[])
{
int c[BITS];
ha(a[0], b[0], x[0], c[0]);
Loop (i,1,BITS)
fa(a[i], b[i], c[i-1], x[i], c[i]);
}
void byte_write(int val, int x[])
{
Loop (i,0,BITS) {
add_xor({n+(val&1)});
x[i] = nxt++;
val >>= 1;
}
}
void byte_cmp(int a[], int b[], int &x)
{
Loop (i,0,BITS)
add_xor({a[i], b[i]});
vector<int> vec;
Loop (i,0,BITS)
vec.push_back(nxt+i);
add_or(vec);
add_not(nxt+BITS);
x = nxt+BITS+1;
nxt += BITS+2;
}
void construct_network(int H, int W, int K)
{
h = H; w = W; k = K;
n = w*h;
add_xor({0,0});
add_not(n);
nxt = n+2;
int A[BITS], B[BITS];
int dis[BITS], goal[BITS];
Loop (dir,0,2) {
int kooft = nxt;
int lst = n;
Loop (j,0,dir?h:w) {
vector<int> vec;
vec.push_back(lst);
Loop (i,0,dir?w:h)
vec.push_back(get_n(dir?j:i, dir?i:j));
add_xor(vec);
lst=nxt++;
}
int marg[BITS];
Loop (i,0,BITS)
(dir?B:A)[i] = marg[i] = n;
Loop (j,0,dir?h:w) {
marg[0] = kooft+j;
byte_add(marg, (dir?B:A), (dir?B:A));
}
}
byte_add(A, B, dis);
byte_write(k, goal);
int ans;
byte_cmp(dis, goal, ans);
//printf("a = %d\nb = %d\nsum = %d\nk = %d\n", n+2, n+11, dis, goal);
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
212 KB |
Output is correct |
3 |
Correct |
1 ms |
212 KB |
Output is correct |
4 |
Correct |
0 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 |
1 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 |
1 ms |
212 KB |
Output is correct |
11 |
Correct |
0 ms |
212 KB |
Output is correct |
12 |
Correct |
1 ms |
212 KB |
Output is correct |
13 |
Correct |
1 ms |
212 KB |
Output is correct |
14 |
Correct |
1 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 |
1 ms |
212 KB |
Output is correct |
18 |
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 |
1 ms |
212 KB |
Output is correct |
3 |
Correct |
1 ms |
212 KB |
Output is correct |
4 |
Correct |
0 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 |
1 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 |
1 ms |
212 KB |
Output is correct |
11 |
Correct |
0 ms |
212 KB |
Output is correct |
12 |
Correct |
1 ms |
212 KB |
Output is correct |
13 |
Correct |
1 ms |
212 KB |
Output is correct |
14 |
Correct |
1 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 |
1 ms |
212 KB |
Output is correct |
18 |
Correct |
1 ms |
212 KB |
Output is correct |
19 |
Correct |
1 ms |
340 KB |
Output is correct |
20 |
Correct |
1 ms |
340 KB |
Output is correct |
21 |
Correct |
1 ms |
340 KB |
Output is correct |
22 |
Correct |
1 ms |
340 KB |
Output is correct |
23 |
Correct |
1 ms |
340 KB |
Output is correct |
24 |
Correct |
1 ms |
340 KB |
Output is correct |
25 |
Correct |
1 ms |
300 KB |
Output is correct |
26 |
Correct |
1 ms |
340 KB |
Output is correct |
27 |
Correct |
1 ms |
340 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
212 KB |
Output is correct |
3 |
Correct |
1 ms |
212 KB |
Output is correct |
4 |
Correct |
0 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 |
1 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 |
1 ms |
212 KB |
Output is correct |
11 |
Correct |
0 ms |
212 KB |
Output is correct |
12 |
Correct |
1 ms |
212 KB |
Output is correct |
13 |
Correct |
1 ms |
212 KB |
Output is correct |
14 |
Correct |
1 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 |
1 ms |
212 KB |
Output is correct |
18 |
Correct |
1 ms |
212 KB |
Output is correct |
19 |
Correct |
1 ms |
340 KB |
Output is correct |
20 |
Correct |
1 ms |
340 KB |
Output is correct |
21 |
Correct |
1 ms |
340 KB |
Output is correct |
22 |
Correct |
1 ms |
340 KB |
Output is correct |
23 |
Correct |
1 ms |
340 KB |
Output is correct |
24 |
Correct |
1 ms |
340 KB |
Output is correct |
25 |
Correct |
1 ms |
300 KB |
Output is correct |
26 |
Correct |
1 ms |
340 KB |
Output is correct |
27 |
Correct |
1 ms |
340 KB |
Output is correct |
28 |
Correct |
3 ms |
468 KB |
Output is correct |
29 |
Correct |
2 ms |
340 KB |
Output is correct |
30 |
Correct |
1 ms |
340 KB |
Output is correct |
31 |
Correct |
2 ms |
340 KB |
Output is correct |
32 |
Correct |
2 ms |
340 KB |
Output is correct |
33 |
Correct |
2 ms |
468 KB |
Output is correct |
34 |
Correct |
2 ms |
468 KB |
Output is correct |
35 |
Correct |
2 ms |
468 KB |
Output is correct |
36 |
Correct |
2 ms |
468 KB |
Output is correct |
37 |
Correct |
2 ms |
596 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
212 KB |
Output is correct |
3 |
Correct |
1 ms |
212 KB |
Output is correct |
4 |
Correct |
0 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 |
1 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 |
1 ms |
212 KB |
Output is correct |
11 |
Correct |
0 ms |
212 KB |
Output is correct |
12 |
Correct |
1 ms |
212 KB |
Output is correct |
13 |
Correct |
1 ms |
212 KB |
Output is correct |
14 |
Correct |
1 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 |
1 ms |
212 KB |
Output is correct |
18 |
Correct |
1 ms |
212 KB |
Output is correct |
19 |
Correct |
1 ms |
340 KB |
Output is correct |
20 |
Correct |
1 ms |
340 KB |
Output is correct |
21 |
Correct |
1 ms |
340 KB |
Output is correct |
22 |
Correct |
1 ms |
340 KB |
Output is correct |
23 |
Correct |
1 ms |
340 KB |
Output is correct |
24 |
Correct |
1 ms |
340 KB |
Output is correct |
25 |
Correct |
1 ms |
300 KB |
Output is correct |
26 |
Correct |
1 ms |
340 KB |
Output is correct |
27 |
Correct |
1 ms |
340 KB |
Output is correct |
28 |
Correct |
3 ms |
468 KB |
Output is correct |
29 |
Correct |
2 ms |
340 KB |
Output is correct |
30 |
Correct |
1 ms |
340 KB |
Output is correct |
31 |
Correct |
2 ms |
340 KB |
Output is correct |
32 |
Correct |
2 ms |
340 KB |
Output is correct |
33 |
Correct |
2 ms |
468 KB |
Output is correct |
34 |
Correct |
2 ms |
468 KB |
Output is correct |
35 |
Correct |
2 ms |
468 KB |
Output is correct |
36 |
Correct |
2 ms |
468 KB |
Output is correct |
37 |
Correct |
2 ms |
596 KB |
Output is correct |
38 |
Correct |
6 ms |
1104 KB |
Output is correct |
39 |
Correct |
3 ms |
596 KB |
Output is correct |
40 |
Correct |
3 ms |
596 KB |
Output is correct |
41 |
Correct |
6 ms |
848 KB |
Output is correct |
42 |
Correct |
4 ms |
848 KB |
Output is correct |
43 |
Correct |
6 ms |
1104 KB |
Output is correct |
44 |
Correct |
6 ms |
1056 KB |
Output is correct |
45 |
Correct |
7 ms |
1104 KB |
Output is correct |
46 |
Correct |
7 ms |
1060 KB |
Output is correct |
47 |
Correct |
7 ms |
1104 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
4 ms |
976 KB |
Output is correct |
2 |
Correct |
5 ms |
976 KB |
Output is correct |
3 |
Correct |
5 ms |
976 KB |
Output is correct |
4 |
Correct |
5 ms |
976 KB |
Output is correct |
5 |
Correct |
5 ms |
976 KB |
Output is correct |
6 |
Correct |
5 ms |
1052 KB |
Output is correct |
7 |
Correct |
4 ms |
976 KB |
Output is correct |
8 |
Correct |
5 ms |
1064 KB |
Output is correct |
9 |
Correct |
5 ms |
976 KB |
Output is correct |
10 |
Correct |
5 ms |
976 KB |
Output is correct |
11 |
Correct |
4 ms |
976 KB |
Output is correct |
12 |
Correct |
5 ms |
976 KB |
Output is correct |
13 |
Correct |
5 ms |
976 KB |
Output is correct |
14 |
Correct |
7 ms |
976 KB |
Output is correct |
15 |
Correct |
5 ms |
976 KB |
Output is correct |
16 |
Correct |
6 ms |
976 KB |
Output is correct |
17 |
Correct |
5 ms |
976 KB |
Output is correct |
18 |
Correct |
5 ms |
976 KB |
Output is correct |
19 |
Correct |
5 ms |
976 KB |
Output is correct |
20 |
Correct |
5 ms |
976 KB |
Output is correct |
21 |
Correct |
1 ms |
212 KB |
Output is correct |
22 |
Correct |
1 ms |
212 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
212 KB |
Output is correct |
3 |
Correct |
4 ms |
720 KB |
Output is correct |
4 |
Correct |
4 ms |
744 KB |
Output is correct |
5 |
Correct |
4 ms |
720 KB |
Output is correct |
6 |
Correct |
4 ms |
688 KB |
Output is correct |
7 |
Correct |
4 ms |
724 KB |
Output is correct |
8 |
Correct |
6 ms |
976 KB |
Output is correct |
9 |
Correct |
5 ms |
1104 KB |
Output is correct |
10 |
Correct |
5 ms |
976 KB |
Output is correct |
11 |
Correct |
5 ms |
976 KB |
Output is correct |
12 |
Correct |
6 ms |
976 KB |
Output is correct |
13 |
Correct |
5 ms |
976 KB |
Output is correct |
14 |
Correct |
5 ms |
976 KB |
Output is correct |
15 |
Correct |
5 ms |
1068 KB |
Output is correct |
16 |
Correct |
5 ms |
976 KB |
Output is correct |
17 |
Correct |
5 ms |
1068 KB |
Output is correct |
18 |
Correct |
4 ms |
976 KB |
Output is correct |
19 |
Correct |
4 ms |
976 KB |
Output is correct |
20 |
Incorrect |
2 ms |
1236 KB |
WA in grader: Too many instructions |
21 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
2 ms |
1232 KB |
WA in grader: Too many instructions |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
212 KB |
Output is correct |
3 |
Correct |
1 ms |
212 KB |
Output is correct |
4 |
Correct |
0 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 |
1 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 |
1 ms |
212 KB |
Output is correct |
11 |
Correct |
0 ms |
212 KB |
Output is correct |
12 |
Correct |
1 ms |
212 KB |
Output is correct |
13 |
Correct |
1 ms |
212 KB |
Output is correct |
14 |
Correct |
1 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 |
1 ms |
212 KB |
Output is correct |
18 |
Correct |
1 ms |
212 KB |
Output is correct |
19 |
Correct |
1 ms |
340 KB |
Output is correct |
20 |
Correct |
1 ms |
340 KB |
Output is correct |
21 |
Correct |
1 ms |
340 KB |
Output is correct |
22 |
Correct |
1 ms |
340 KB |
Output is correct |
23 |
Correct |
1 ms |
340 KB |
Output is correct |
24 |
Correct |
1 ms |
340 KB |
Output is correct |
25 |
Correct |
1 ms |
300 KB |
Output is correct |
26 |
Correct |
1 ms |
340 KB |
Output is correct |
27 |
Correct |
1 ms |
340 KB |
Output is correct |
28 |
Correct |
3 ms |
468 KB |
Output is correct |
29 |
Correct |
2 ms |
340 KB |
Output is correct |
30 |
Correct |
1 ms |
340 KB |
Output is correct |
31 |
Correct |
2 ms |
340 KB |
Output is correct |
32 |
Correct |
2 ms |
340 KB |
Output is correct |
33 |
Correct |
2 ms |
468 KB |
Output is correct |
34 |
Correct |
2 ms |
468 KB |
Output is correct |
35 |
Correct |
2 ms |
468 KB |
Output is correct |
36 |
Correct |
2 ms |
468 KB |
Output is correct |
37 |
Correct |
2 ms |
596 KB |
Output is correct |
38 |
Correct |
6 ms |
1104 KB |
Output is correct |
39 |
Correct |
3 ms |
596 KB |
Output is correct |
40 |
Correct |
3 ms |
596 KB |
Output is correct |
41 |
Correct |
6 ms |
848 KB |
Output is correct |
42 |
Correct |
4 ms |
848 KB |
Output is correct |
43 |
Correct |
6 ms |
1104 KB |
Output is correct |
44 |
Correct |
6 ms |
1056 KB |
Output is correct |
45 |
Correct |
7 ms |
1104 KB |
Output is correct |
46 |
Correct |
7 ms |
1060 KB |
Output is correct |
47 |
Correct |
7 ms |
1104 KB |
Output is correct |
48 |
Correct |
4 ms |
976 KB |
Output is correct |
49 |
Correct |
5 ms |
976 KB |
Output is correct |
50 |
Correct |
5 ms |
976 KB |
Output is correct |
51 |
Correct |
5 ms |
976 KB |
Output is correct |
52 |
Correct |
5 ms |
976 KB |
Output is correct |
53 |
Correct |
5 ms |
1052 KB |
Output is correct |
54 |
Correct |
4 ms |
976 KB |
Output is correct |
55 |
Correct |
5 ms |
1064 KB |
Output is correct |
56 |
Correct |
5 ms |
976 KB |
Output is correct |
57 |
Correct |
5 ms |
976 KB |
Output is correct |
58 |
Correct |
4 ms |
976 KB |
Output is correct |
59 |
Correct |
5 ms |
976 KB |
Output is correct |
60 |
Correct |
5 ms |
976 KB |
Output is correct |
61 |
Correct |
7 ms |
976 KB |
Output is correct |
62 |
Correct |
5 ms |
976 KB |
Output is correct |
63 |
Correct |
6 ms |
976 KB |
Output is correct |
64 |
Correct |
5 ms |
976 KB |
Output is correct |
65 |
Correct |
5 ms |
976 KB |
Output is correct |
66 |
Correct |
5 ms |
976 KB |
Output is correct |
67 |
Correct |
5 ms |
976 KB |
Output is correct |
68 |
Correct |
1 ms |
212 KB |
Output is correct |
69 |
Correct |
1 ms |
212 KB |
Output is correct |
70 |
Correct |
1 ms |
212 KB |
Output is correct |
71 |
Correct |
1 ms |
212 KB |
Output is correct |
72 |
Correct |
4 ms |
720 KB |
Output is correct |
73 |
Correct |
4 ms |
744 KB |
Output is correct |
74 |
Correct |
4 ms |
720 KB |
Output is correct |
75 |
Correct |
4 ms |
688 KB |
Output is correct |
76 |
Correct |
4 ms |
724 KB |
Output is correct |
77 |
Correct |
6 ms |
976 KB |
Output is correct |
78 |
Correct |
5 ms |
1104 KB |
Output is correct |
79 |
Correct |
5 ms |
976 KB |
Output is correct |
80 |
Correct |
5 ms |
976 KB |
Output is correct |
81 |
Correct |
6 ms |
976 KB |
Output is correct |
82 |
Correct |
5 ms |
976 KB |
Output is correct |
83 |
Correct |
5 ms |
976 KB |
Output is correct |
84 |
Correct |
5 ms |
1068 KB |
Output is correct |
85 |
Correct |
5 ms |
976 KB |
Output is correct |
86 |
Correct |
5 ms |
1068 KB |
Output is correct |
87 |
Correct |
4 ms |
976 KB |
Output is correct |
88 |
Correct |
4 ms |
976 KB |
Output is correct |
89 |
Incorrect |
2 ms |
1236 KB |
WA in grader: Too many instructions |
90 |
Halted |
0 ms |
0 KB |
- |