#include <vector>
#include <algorithm>
#include "Anna.h"
namespace {
int encode(int dr, int dc) {
if(dc >= +2) return 2;
if(dc <= -2) return 3;
if(dr >= +2) return 4;
if(dr <= -2) return 5;
return (dr + 1) * 3 + (dc + 1) + 6;
}
}
void Anna(int N, int K, std::vector<int> R, std::vector<int> C) {
// Step #1 : Decide placement of "flags with number 1"
int optflag = 14; int optdelta = -1;
for(int delta = 0; delta < 9; ++delta) {
int maxflag = 1;
for(int i = 0; i < N; ++i) {
for(int j = 0; j < N; ++j) {
int precinct = ((i - delta / 3 + 3) % 3) * 3 + ((j - delta % 3 + 3) % 3);
if(precinct <= 6) {
maxflag = std::max(maxflag, encode(R[precinct] - i, C[precinct] - j));
}
}
}
if(optflag > maxflag) {
optflag = maxflag;
optdelta = delta;
}
}
// Step #2 : Make a provisional plan
std::vector<std::vector<int> > F(N, std::vector<int>(N, -1));
for(int i = 0; i < N; ++i) {
for(int j = 0; j < N; ++j) {
int precinct = ((i - optdelta / 3 + 3) % 3) * 3 + ((j - optdelta % 3 + 3) % 3);
if(precinct <= 6) {
F[i][j] = encode(R[precinct] - i, C[precinct] - j);
}
if(precinct == 8) {
F[i][j] = 1;
}
}
}
// Step #3. Apply "decrease-by-1" operation and finalize the plan
std::vector<bool> used(14, false);
for(int i = 0; i < N; ++i) {
for(int j = 0; j < N; ++j) {
if(F[i][j] != -1) {
used[F[i][j]] = true;
}
}
}
int non = std::find(used.begin() + 1, used.end(), false) - used.begin();
for(int i = 0; i < N; ++i) {
for(int j = 0; j < N; ++j) {
if(F[i][j] == -1) {
F[i][j] = non - 1;
}
else if(F[i][j] > non) {
--F[i][j];
}
SetFlag(i, j, F[i][j] * 2);
}
}
}
#include <vector>
#include <utility>
#include <algorithm>
#include "Bruno.h"
std::vector<int> Bruno(int K, std::vector<int> value) {
// Step #1. Restore the plan before "decrease-by-1" operation
for (int &x : value) x /= 2;
int center = std::find(value.begin(), value.end(), 1) - value.begin();
int rp = (center / 3 + 1) % 3, cp = (center % 3 + 1) % 3;
std::vector<int> precinct(9);
for(int i = 0; i < 9; ++i) {
precinct[i] = ((i / 3 - rp + 3) % 3) * 3 + ((i % 3 - cp + 3) % 3);
}
int seventh = std::find(precinct.begin(), precinct.end(), 7) - precinct.begin();
int non = value[seventh] + 1;
for(int i = 0; i < 9; ++i) {
if(value[i] >= non) {
++value[i];
}
}
// Step #2. Determine the next actions
std::vector<int> res(K, -1);
for(int i = 0; i < K; ++i) {
int ptr = std::find(precinct.begin(), precinct.end(), i) - precinct.begin();
int id = value[ptr] - 2;
if(id <= 3) {
res[i] = id;
}
else {
int isor = ((id - 4) / 3 - 1) + (ptr / 3 - 1);
int isoc = ((id - 4) % 3 - 1) + (ptr % 3 - 1);
if(isoc > 0) res[i] = 0;
else if(isoc < 0) res[i] = 1;
else if(isor > 0) res[i] = 2;
else if(isor < 0) res[i] = 3;
else res[i] = 4;
}
}
return res;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Partially correct |
17 ms |
728 KB |
Partially correct |
2 |
Partially correct |
17 ms |
512 KB |
Partially correct |
3 |
Partially correct |
14 ms |
620 KB |
Partially correct |
4 |
Partially correct |
15 ms |
512 KB |
Partially correct |
5 |
Partially correct |
17 ms |
512 KB |
Partially correct |
6 |
Partially correct |
17 ms |
740 KB |
Partially correct |
7 |
Partially correct |
19 ms |
640 KB |
Partially correct |
8 |
Partially correct |
13 ms |
512 KB |
Partially correct |
9 |
Partially correct |
19 ms |
512 KB |
Partially correct |
10 |
Partially correct |
18 ms |
512 KB |
Partially correct |
11 |
Partially correct |
13 ms |
640 KB |
Partially correct |
12 |
Partially correct |
18 ms |
512 KB |
Partially correct |
13 |
Partially correct |
17 ms |
740 KB |
Partially correct |
14 |
Partially correct |
19 ms |
620 KB |
Partially correct |
15 |
Partially correct |
17 ms |
512 KB |
Partially correct |
16 |
Partially correct |
18 ms |
640 KB |
Partially correct |
17 |
Partially correct |
15 ms |
616 KB |
Partially correct |
18 |
Partially correct |
18 ms |
740 KB |
Partially correct |
19 |
Partially correct |
19 ms |
512 KB |
Partially correct |
20 |
Partially correct |
18 ms |
512 KB |
Partially correct |
21 |
Partially correct |
19 ms |
512 KB |
Partially correct |
22 |
Partially correct |
16 ms |
512 KB |
Partially correct |
23 |
Partially correct |
17 ms |
684 KB |
Partially correct |
24 |
Partially correct |
17 ms |
728 KB |
Partially correct |
25 |
Partially correct |
16 ms |
612 KB |
Partially correct |
26 |
Partially correct |
18 ms |
512 KB |
Partially correct |
27 |
Partially correct |
18 ms |
612 KB |
Partially correct |
28 |
Partially correct |
18 ms |
512 KB |
Partially correct |
29 |
Partially correct |
19 ms |
620 KB |
Partially correct |
30 |
Partially correct |
17 ms |
612 KB |
Partially correct |
31 |
Partially correct |
17 ms |
512 KB |
Partially correct |
32 |
Partially correct |
18 ms |
680 KB |
Partially correct |
33 |
Partially correct |
18 ms |
724 KB |
Partially correct |
34 |
Partially correct |
14 ms |
512 KB |
Partially correct |
35 |
Partially correct |
18 ms |
512 KB |
Partially correct |
36 |
Partially correct |
19 ms |
620 KB |
Partially correct |
37 |
Partially correct |
19 ms |
512 KB |
Partially correct |
38 |
Partially correct |
20 ms |
560 KB |
Partially correct |
39 |
Partially correct |
18 ms |
620 KB |
Partially correct |
40 |
Partially correct |
20 ms |
640 KB |
Partially correct |
41 |
Partially correct |
18 ms |
728 KB |
Partially correct |
42 |
Partially correct |
20 ms |
728 KB |
Partially correct |
43 |
Partially correct |
18 ms |
620 KB |
Partially correct |
44 |
Partially correct |
13 ms |
612 KB |
Partially correct |
45 |
Partially correct |
20 ms |
512 KB |
Partially correct |
46 |
Partially correct |
22 ms |
512 KB |
Partially correct |
47 |
Partially correct |
20 ms |
512 KB |
Partially correct |
48 |
Partially correct |
20 ms |
728 KB |
Partially correct |
49 |
Partially correct |
20 ms |
612 KB |
Partially correct |
50 |
Partially correct |
20 ms |
512 KB |
Partially correct |
51 |
Partially correct |
22 ms |
620 KB |
Partially correct |
52 |
Partially correct |
19 ms |
748 KB |
Partially correct |
53 |
Partially correct |
23 ms |
724 KB |
Partially correct |
54 |
Partially correct |
23 ms |
620 KB |
Partially correct |
55 |
Partially correct |
20 ms |
672 KB |
Partially correct |
56 |
Partially correct |
26 ms |
740 KB |
Partially correct |
57 |
Partially correct |
24 ms |
640 KB |
Partially correct |
58 |
Partially correct |
25 ms |
512 KB |
Partially correct |
59 |
Partially correct |
27 ms |
620 KB |
Partially correct |
60 |
Partially correct |
25 ms |
620 KB |
Partially correct |
61 |
Partially correct |
24 ms |
512 KB |
Partially correct |
62 |
Partially correct |
20 ms |
512 KB |
Partially correct |
63 |
Partially correct |
24 ms |
720 KB |
Partially correct |
64 |
Partially correct |
25 ms |
612 KB |
Partially correct |
65 |
Partially correct |
25 ms |
512 KB |
Partially correct |
66 |
Partially correct |
26 ms |
732 KB |
Partially correct |
67 |
Partially correct |
26 ms |
620 KB |
Partially correct |
68 |
Partially correct |
25 ms |
752 KB |
Partially correct |
69 |
Partially correct |
24 ms |
512 KB |
Partially correct |
70 |
Partially correct |
20 ms |
512 KB |
Partially correct |
71 |
Partially correct |
18 ms |
616 KB |
Partially correct |
72 |
Partially correct |
20 ms |
612 KB |
Partially correct |
73 |
Partially correct |
24 ms |
512 KB |
Partially correct |
74 |
Partially correct |
22 ms |
728 KB |
Partially correct |
75 |
Partially correct |
24 ms |
512 KB |
Partially correct |
76 |
Partially correct |
21 ms |
512 KB |
Partially correct |
77 |
Partially correct |
24 ms |
512 KB |
Partially correct |
78 |
Partially correct |
23 ms |
612 KB |
Partially correct |
79 |
Partially correct |
28 ms |
512 KB |
Partially correct |
80 |
Partially correct |
21 ms |
644 KB |
Partially correct |
81 |
Partially correct |
23 ms |
728 KB |
Partially correct |
82 |
Partially correct |
26 ms |
728 KB |
Partially correct |
83 |
Partially correct |
25 ms |
512 KB |
Partially correct |
84 |
Partially correct |
28 ms |
748 KB |
Partially correct |
85 |
Partially correct |
20 ms |
512 KB |
Partially correct |
86 |
Partially correct |
25 ms |
640 KB |
Partially correct |
87 |
Partially correct |
22 ms |
512 KB |
Partially correct |
88 |
Partially correct |
22 ms |
532 KB |
Partially correct |
89 |
Partially correct |
25 ms |
512 KB |
Partially correct |
90 |
Partially correct |
25 ms |
512 KB |
Partially correct |
91 |
Partially correct |
27 ms |
640 KB |
Partially correct |
92 |
Partially correct |
26 ms |
512 KB |
Partially correct |
93 |
Partially correct |
24 ms |
512 KB |
Partially correct |
94 |
Partially correct |
21 ms |
512 KB |
Partially correct |
95 |
Partially correct |
27 ms |
512 KB |
Partially correct |
96 |
Partially correct |
23 ms |
512 KB |
Partially correct |
97 |
Partially correct |
26 ms |
512 KB |
Partially correct |
98 |
Partially correct |
20 ms |
512 KB |
Partially correct |
99 |
Partially correct |
21 ms |
512 KB |
Partially correct |
100 |
Partially correct |
21 ms |
512 KB |
Partially correct |
101 |
Partially correct |
22 ms |
720 KB |
Partially correct |
102 |
Partially correct |
26 ms |
672 KB |
Partially correct |
103 |
Partially correct |
23 ms |
512 KB |
Partially correct |
104 |
Partially correct |
24 ms |
728 KB |
Partially correct |
105 |
Partially correct |
26 ms |
564 KB |
Partially correct |
106 |
Partially correct |
25 ms |
512 KB |
Partially correct |
107 |
Partially correct |
21 ms |
512 KB |
Partially correct |
108 |
Partially correct |
26 ms |
640 KB |
Partially correct |
109 |
Partially correct |
28 ms |
620 KB |
Partially correct |
110 |
Partially correct |
31 ms |
728 KB |
Partially correct |
111 |
Partially correct |
25 ms |
612 KB |
Partially correct |
112 |
Partially correct |
25 ms |
512 KB |
Partially correct |
113 |
Partially correct |
30 ms |
612 KB |
Partially correct |
114 |
Partially correct |
22 ms |
512 KB |
Partially correct |
115 |
Partially correct |
22 ms |
512 KB |
Partially correct |
116 |
Partially correct |
24 ms |
512 KB |
Partially correct |
117 |
Partially correct |
24 ms |
612 KB |
Partially correct |
118 |
Partially correct |
24 ms |
620 KB |
Partially correct |
119 |
Partially correct |
22 ms |
512 KB |
Partially correct |
120 |
Partially correct |
1043 ms |
864 KB |
Partially correct |
121 |
Partially correct |
1014 ms |
872 KB |
Partially correct |
122 |
Partially correct |
1043 ms |
904 KB |
Partially correct |
123 |
Partially correct |
1039 ms |
820 KB |
Partially correct |
124 |
Partially correct |
962 ms |
912 KB |
Partially correct |
125 |
Partially correct |
981 ms |
784 KB |
Partially correct |
126 |
Partially correct |
872 ms |
904 KB |
Partially correct |
127 |
Partially correct |
918 ms |
1008 KB |
Partially correct |
128 |
Partially correct |
884 ms |
792 KB |
Partially correct |
129 |
Partially correct |
1002 ms |
860 KB |
Partially correct |
130 |
Partially correct |
1010 ms |
956 KB |
Partially correct |
131 |
Partially correct |
1028 ms |
848 KB |
Partially correct |
132 |
Partially correct |
999 ms |
800 KB |
Partially correct |
133 |
Partially correct |
1035 ms |
856 KB |
Partially correct |
134 |
Partially correct |
929 ms |
1044 KB |
Partially correct |
135 |
Partially correct |
904 ms |
964 KB |
Partially correct |
136 |
Partially correct |
917 ms |
784 KB |
Partially correct |
137 |
Partially correct |
948 ms |
864 KB |
Partially correct |
138 |
Partially correct |
910 ms |
992 KB |
Partially correct |
139 |
Partially correct |
998 ms |
852 KB |
Partially correct |
140 |
Partially correct |
958 ms |
956 KB |
Partially correct |
141 |
Partially correct |
1006 ms |
896 KB |
Partially correct |
142 |
Partially correct |
1049 ms |
948 KB |
Partially correct |
143 |
Partially correct |
1017 ms |
784 KB |
Partially correct |
144 |
Partially correct |
939 ms |
896 KB |
Partially correct |
145 |
Partially correct |
1062 ms |
704 KB |
Partially correct |
146 |
Partially correct |
874 ms |
916 KB |
Partially correct |
147 |
Partially correct |
917 ms |
944 KB |
Partially correct |
148 |
Partially correct |
908 ms |
780 KB |
Partially correct |
149 |
Partially correct |
991 ms |
972 KB |
Partially correct |
150 |
Partially correct |
927 ms |
900 KB |
Partially correct |
151 |
Partially correct |
922 ms |
972 KB |
Partially correct |
152 |
Partially correct |
851 ms |
992 KB |
Partially correct |
153 |
Partially correct |
865 ms |
860 KB |
Partially correct |
154 |
Partially correct |
879 ms |
748 KB |
Partially correct |
155 |
Partially correct |
920 ms |
964 KB |
Partially correct |
156 |
Partially correct |
895 ms |
868 KB |
Partially correct |
157 |
Partially correct |
935 ms |
936 KB |
Partially correct |
158 |
Partially correct |
939 ms |
892 KB |
Partially correct |
159 |
Partially correct |
906 ms |
924 KB |
Partially correct |
160 |
Partially correct |
950 ms |
924 KB |
Partially correct |
161 |
Partially correct |
1008 ms |
880 KB |
Partially correct |
162 |
Partially correct |
949 ms |
996 KB |
Partially correct |
163 |
Partially correct |
960 ms |
988 KB |
Partially correct |
164 |
Partially correct |
891 ms |
896 KB |
Partially correct |
165 |
Partially correct |
1029 ms |
808 KB |
Partially correct |
166 |
Partially correct |
962 ms |
696 KB |
Partially correct |
167 |
Partially correct |
1070 ms |
880 KB |
Partially correct |
168 |
Partially correct |
1002 ms |
872 KB |
Partially correct |
169 |
Partially correct |
1020 ms |
896 KB |
Partially correct |
170 |
Partially correct |
950 ms |
808 KB |
Partially correct |
171 |
Partially correct |
1057 ms |
832 KB |
Partially correct |
172 |
Partially correct |
977 ms |
824 KB |
Partially correct |
173 |
Partially correct |
1041 ms |
888 KB |
Partially correct |
174 |
Partially correct |
1129 ms |
864 KB |
Partially correct |
175 |
Partially correct |
1038 ms |
852 KB |
Partially correct |
176 |
Partially correct |
1045 ms |
860 KB |
Partially correct |
177 |
Partially correct |
1030 ms |
896 KB |
Partially correct |
178 |
Partially correct |
901 ms |
896 KB |
Partially correct |
179 |
Partially correct |
977 ms |
784 KB |
Partially correct |
180 |
Partially correct |
1035 ms |
696 KB |
Partially correct |
181 |
Partially correct |
1081 ms |
788 KB |
Partially correct |
182 |
Partially correct |
945 ms |
880 KB |
Partially correct |
183 |
Partially correct |
1029 ms |
884 KB |
Partially correct |
184 |
Partially correct |
1008 ms |
928 KB |
Partially correct |
185 |
Partially correct |
1041 ms |
732 KB |
Partially correct |
186 |
Partially correct |
1101 ms |
716 KB |
Partially correct |
187 |
Partially correct |
1089 ms |
892 KB |
Partially correct |
188 |
Partially correct |
1017 ms |
868 KB |
Partially correct |
189 |
Partially correct |
1020 ms |
780 KB |
Partially correct |
190 |
Partially correct |
1045 ms |
900 KB |
Partially correct |
191 |
Partially correct |
1160 ms |
860 KB |
Partially correct |
192 |
Partially correct |
1113 ms |
940 KB |
Partially correct |
193 |
Partially correct |
928 ms |
764 KB |
Partially correct |
194 |
Partially correct |
1012 ms |
756 KB |
Partially correct |
195 |
Partially correct |
981 ms |
940 KB |
Partially correct |
196 |
Partially correct |
934 ms |
876 KB |
Partially correct |
197 |
Partially correct |
1015 ms |
796 KB |
Partially correct |
198 |
Partially correct |
919 ms |
996 KB |
Partially correct |
199 |
Partially correct |
1062 ms |
1056 KB |
Partially correct |
200 |
Partially correct |
999 ms |
904 KB |
Partially correct |
201 |
Partially correct |
957 ms |
896 KB |
Partially correct |
202 |
Partially correct |
930 ms |
728 KB |
Partially correct |
203 |
Partially correct |
1015 ms |
1112 KB |
Partially correct |
204 |
Partially correct |
884 ms |
808 KB |
Partially correct |
205 |
Partially correct |
1004 ms |
872 KB |
Partially correct |
206 |
Partially correct |
994 ms |
792 KB |
Partially correct |
207 |
Partially correct |
1035 ms |
824 KB |
Partially correct |
208 |
Partially correct |
925 ms |
912 KB |
Partially correct |
209 |
Partially correct |
1067 ms |
1028 KB |
Partially correct |
210 |
Partially correct |
672 ms |
804 KB |
Partially correct |
211 |
Partially correct |
870 ms |
784 KB |
Partially correct |
212 |
Partially correct |
737 ms |
888 KB |
Partially correct |
213 |
Partially correct |
846 ms |
824 KB |
Partially correct |
214 |
Partially correct |
859 ms |
884 KB |
Partially correct |
215 |
Partially correct |
853 ms |
696 KB |
Partially correct |
216 |
Partially correct |
780 ms |
768 KB |
Partially correct |
217 |
Partially correct |
693 ms |
736 KB |
Partially correct |
218 |
Partially correct |
626 ms |
780 KB |
Partially correct |
219 |
Partially correct |
696 ms |
896 KB |
Partially correct |
220 |
Partially correct |
699 ms |
876 KB |
Partially correct |
221 |
Partially correct |
710 ms |
812 KB |
Partially correct |
222 |
Partially correct |
713 ms |
832 KB |
Partially correct |
223 |
Partially correct |
646 ms |
724 KB |
Partially correct |
224 |
Partially correct |
723 ms |
756 KB |
Partially correct |
225 |
Partially correct |
721 ms |
728 KB |
Partially correct |
226 |
Partially correct |
674 ms |
1040 KB |
Partially correct |