#include <bits/stdc++.h>
using namespace std;
#define log(x) (63^__builtin_clzll(x))
//#define endl '\n'
#define all(x) (x).begin() , (x).end()
pair<int, int> dp[(1 << 10) + 2][(1 << 10) + 2][11];
void solve() {
int n;
cin >> n;
vector<int> a(n), k(n);
for(int i = 0; i < n; ++i) cin >> a[i];
for(int i = 0; i < n; ++i) cin >> k[i];
int fullDown = (1 << 10) - 1, fullUp = (1 << 20) - 1 - fullDown, ans = 0, last = 0;
vector<int> prev(n, -1);
for(int i = 0; i < n; ++i) {
int mx = 1, up = ((fullUp & a[i]) >> 10), down = (fullDown & a[i]);
for(int reqUp = 0; reqUp < (1 << 10); ++reqUp) {
int common = __builtin_popcount((reqUp & up));
if(k[i] >= common && k[i] - common <= 10) {
auto state = dp[reqUp][down][k[i] - common];
if(state.first + 1 > mx) prev[i] = state.second;
mx = max(mx, state.first + 1);
}
}
if(mx > ans) last = i;
ans = max(ans, mx);
for(int reqDown = 0; reqDown < (1 << 10); ++reqDown) {
int common = __builtin_popcount((reqDown & a[i]));
dp[up][reqDown][common] = max(dp[up][reqDown][common], {mx, i});
}
}
vector<int> indices;
while(last != -1) {
indices.push_back(last);
last = prev[last];
}
assert(indices.size() == ans);
reverse(all(indices));
int ok = 1;
for(int j = 1; j < indices.size(); ++j)
if(__builtin_popcount(a[indices[j]] & a[indices[j - 1]]) != k[indices[j]]) ok = 0;
if(ok == 0) {
--ans;
indices.pop_back();
}
cout << ans << endl;
for(auto j : indices) cout << j + 1 << " ";
cout << endl;
return;
}
main() {
ios_base::sync_with_stdio(false);cout.tie(nullptr);cin.tie(nullptr);
int t = 1;
//cin >> t;
while(t--) solve();
return 0;
}
Compilation message
In file included from /usr/include/c++/10/cassert:44,
from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33,
from subsequence.cpp:1:
subsequence.cpp: In function 'void solve()':
subsequence.cpp:40:27: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
40 | assert(indices.size() == ans);
| ~~~~~~~~~~~~~~~^~~~~~
subsequence.cpp:44:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
44 | for(int j = 1; j < indices.size(); ++j)
| ~~^~~~~~~~~~~~~~~~
subsequence.cpp: At global scope:
subsequence.cpp:58:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
58 | main() {
| ^~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
600 KB |
answer = 4 |
2 |
Correct |
0 ms |
856 KB |
answer = 1 |
3 |
Correct |
1 ms |
604 KB |
answer = 2 |
4 |
Correct |
1 ms |
348 KB |
answer = 1 |
5 |
Correct |
1 ms |
604 KB |
answer = 2 |
6 |
Correct |
1 ms |
604 KB |
answer = 1 |
7 |
Correct |
1 ms |
348 KB |
answer = 1 |
8 |
Correct |
1 ms |
1884 KB |
answer = 3 |
9 |
Correct |
2 ms |
1628 KB |
answer = 2 |
10 |
Correct |
1 ms |
1880 KB |
answer = 3 |
11 |
Correct |
1 ms |
1628 KB |
answer = 2 |
12 |
Correct |
1 ms |
2004 KB |
answer = 3 |
13 |
Correct |
1 ms |
1628 KB |
answer = 2 |
14 |
Correct |
2 ms |
1628 KB |
answer = 1 |
15 |
Correct |
2 ms |
1996 KB |
answer = 1 |
16 |
Correct |
2 ms |
1884 KB |
answer = 1 |
17 |
Correct |
2 ms |
1628 KB |
answer = 1 |
18 |
Correct |
1 ms |
860 KB |
answer = 1 |
19 |
Correct |
1 ms |
860 KB |
answer = 1 |
20 |
Correct |
1 ms |
604 KB |
answer = 1 |
21 |
Correct |
1 ms |
720 KB |
answer = 1 |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
600 KB |
answer = 4 |
2 |
Correct |
0 ms |
856 KB |
answer = 1 |
3 |
Correct |
1 ms |
604 KB |
answer = 2 |
4 |
Correct |
1 ms |
348 KB |
answer = 1 |
5 |
Correct |
1 ms |
604 KB |
answer = 2 |
6 |
Correct |
1 ms |
604 KB |
answer = 1 |
7 |
Correct |
1 ms |
348 KB |
answer = 1 |
8 |
Correct |
1 ms |
1884 KB |
answer = 3 |
9 |
Correct |
2 ms |
1628 KB |
answer = 2 |
10 |
Correct |
1 ms |
1880 KB |
answer = 3 |
11 |
Correct |
1 ms |
1628 KB |
answer = 2 |
12 |
Correct |
1 ms |
2004 KB |
answer = 3 |
13 |
Correct |
1 ms |
1628 KB |
answer = 2 |
14 |
Correct |
2 ms |
1628 KB |
answer = 1 |
15 |
Correct |
2 ms |
1996 KB |
answer = 1 |
16 |
Correct |
2 ms |
1884 KB |
answer = 1 |
17 |
Correct |
2 ms |
1628 KB |
answer = 1 |
18 |
Correct |
1 ms |
860 KB |
answer = 1 |
19 |
Correct |
1 ms |
860 KB |
answer = 1 |
20 |
Correct |
1 ms |
604 KB |
answer = 1 |
21 |
Correct |
1 ms |
720 KB |
answer = 1 |
22 |
Correct |
179 ms |
90196 KB |
answer = 358 |
23 |
Correct |
178 ms |
90448 KB |
answer = 336 |
24 |
Correct |
182 ms |
90036 KB |
answer = 339 |
25 |
Correct |
199 ms |
90452 KB |
answer = 357 |
26 |
Correct |
187 ms |
90448 KB |
answer = 354 |
27 |
Correct |
170 ms |
84304 KB |
answer = 333 |
28 |
Correct |
194 ms |
85284 KB |
answer = 314 |
29 |
Correct |
171 ms |
84560 KB |
answer = 322 |
30 |
Correct |
172 ms |
85628 KB |
answer = 339 |
31 |
Correct |
176 ms |
84308 KB |
answer = 351 |
32 |
Correct |
255 ms |
86360 KB |
answer = 1 |
33 |
Correct |
248 ms |
85928 KB |
answer = 1 |
34 |
Correct |
257 ms |
85588 KB |
answer = 1 |
35 |
Correct |
249 ms |
86100 KB |
answer = 1 |
36 |
Correct |
242 ms |
85396 KB |
answer = 1 |
37 |
Correct |
52 ms |
4944 KB |
answer = 1 |
38 |
Correct |
49 ms |
4948 KB |
answer = 1 |
39 |
Correct |
52 ms |
4916 KB |
answer = 1 |
40 |
Correct |
56 ms |
4744 KB |
answer = 1 |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
600 KB |
answer = 4 |
2 |
Correct |
0 ms |
856 KB |
answer = 1 |
3 |
Correct |
1 ms |
604 KB |
answer = 2 |
4 |
Correct |
1 ms |
348 KB |
answer = 1 |
5 |
Correct |
1 ms |
604 KB |
answer = 2 |
6 |
Correct |
1 ms |
604 KB |
answer = 1 |
7 |
Correct |
1 ms |
348 KB |
answer = 1 |
8 |
Correct |
1 ms |
1884 KB |
answer = 3 |
9 |
Correct |
2 ms |
1628 KB |
answer = 2 |
10 |
Correct |
1 ms |
1880 KB |
answer = 3 |
11 |
Correct |
1 ms |
1628 KB |
answer = 2 |
12 |
Correct |
1 ms |
2004 KB |
answer = 3 |
13 |
Correct |
1 ms |
1628 KB |
answer = 2 |
14 |
Correct |
2 ms |
1628 KB |
answer = 1 |
15 |
Correct |
2 ms |
1996 KB |
answer = 1 |
16 |
Correct |
2 ms |
1884 KB |
answer = 1 |
17 |
Correct |
2 ms |
1628 KB |
answer = 1 |
18 |
Correct |
1 ms |
860 KB |
answer = 1 |
19 |
Correct |
1 ms |
860 KB |
answer = 1 |
20 |
Correct |
1 ms |
604 KB |
answer = 1 |
21 |
Correct |
1 ms |
720 KB |
answer = 1 |
22 |
Correct |
179 ms |
90196 KB |
answer = 358 |
23 |
Correct |
178 ms |
90448 KB |
answer = 336 |
24 |
Correct |
182 ms |
90036 KB |
answer = 339 |
25 |
Correct |
199 ms |
90452 KB |
answer = 357 |
26 |
Correct |
187 ms |
90448 KB |
answer = 354 |
27 |
Correct |
170 ms |
84304 KB |
answer = 333 |
28 |
Correct |
194 ms |
85284 KB |
answer = 314 |
29 |
Correct |
171 ms |
84560 KB |
answer = 322 |
30 |
Correct |
172 ms |
85628 KB |
answer = 339 |
31 |
Correct |
176 ms |
84308 KB |
answer = 351 |
32 |
Correct |
255 ms |
86360 KB |
answer = 1 |
33 |
Correct |
248 ms |
85928 KB |
answer = 1 |
34 |
Correct |
257 ms |
85588 KB |
answer = 1 |
35 |
Correct |
249 ms |
86100 KB |
answer = 1 |
36 |
Correct |
242 ms |
85396 KB |
answer = 1 |
37 |
Correct |
52 ms |
4944 KB |
answer = 1 |
38 |
Correct |
49 ms |
4948 KB |
answer = 1 |
39 |
Correct |
52 ms |
4916 KB |
answer = 1 |
40 |
Correct |
56 ms |
4744 KB |
answer = 1 |
41 |
Correct |
812 ms |
2492 KB |
answer = 6296 |
42 |
Correct |
824 ms |
2488 KB |
answer = 6267 |
43 |
Correct |
824 ms |
2488 KB |
answer = 6264 |
44 |
Correct |
814 ms |
2644 KB |
answer = 6384 |
45 |
Correct |
828 ms |
2492 KB |
answer = 6272 |
46 |
Correct |
810 ms |
2504 KB |
answer = 6177 |
47 |
Correct |
805 ms |
2504 KB |
answer = 6144 |
48 |
Correct |
869 ms |
2644 KB |
answer = 6272 |
49 |
Correct |
831 ms |
2516 KB |
answer = 6241 |
50 |
Correct |
844 ms |
2640 KB |
answer = 6169 |
51 |
Correct |
668 ms |
2592 KB |
answer = 1 |
52 |
Correct |
667 ms |
2644 KB |
answer = 1 |
53 |
Correct |
657 ms |
2396 KB |
answer = 1 |
54 |
Correct |
653 ms |
2392 KB |
answer = 1 |
55 |
Correct |
671 ms |
2540 KB |
answer = 1 |
56 |
Correct |
1010 ms |
2444 KB |
answer = 1426 |
57 |
Correct |
1026 ms |
2448 KB |
answer = 1427 |
58 |
Correct |
966 ms |
2640 KB |
answer = 1428 |
59 |
Correct |
1006 ms |
2640 KB |
answer = 1427 |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
600 KB |
answer = 4 |
2 |
Correct |
0 ms |
856 KB |
answer = 1 |
3 |
Correct |
1 ms |
604 KB |
answer = 2 |
4 |
Correct |
1 ms |
348 KB |
answer = 1 |
5 |
Correct |
1 ms |
604 KB |
answer = 2 |
6 |
Correct |
1 ms |
604 KB |
answer = 1 |
7 |
Correct |
1 ms |
348 KB |
answer = 1 |
8 |
Correct |
1 ms |
1884 KB |
answer = 3 |
9 |
Correct |
2 ms |
1628 KB |
answer = 2 |
10 |
Correct |
1 ms |
1880 KB |
answer = 3 |
11 |
Correct |
1 ms |
1628 KB |
answer = 2 |
12 |
Correct |
1 ms |
2004 KB |
answer = 3 |
13 |
Correct |
1 ms |
1628 KB |
answer = 2 |
14 |
Correct |
2 ms |
1628 KB |
answer = 1 |
15 |
Correct |
2 ms |
1996 KB |
answer = 1 |
16 |
Correct |
2 ms |
1884 KB |
answer = 1 |
17 |
Correct |
2 ms |
1628 KB |
answer = 1 |
18 |
Correct |
1 ms |
860 KB |
answer = 1 |
19 |
Correct |
1 ms |
860 KB |
answer = 1 |
20 |
Correct |
1 ms |
604 KB |
answer = 1 |
21 |
Correct |
1 ms |
720 KB |
answer = 1 |
22 |
Correct |
179 ms |
90196 KB |
answer = 358 |
23 |
Correct |
178 ms |
90448 KB |
answer = 336 |
24 |
Correct |
182 ms |
90036 KB |
answer = 339 |
25 |
Correct |
199 ms |
90452 KB |
answer = 357 |
26 |
Correct |
187 ms |
90448 KB |
answer = 354 |
27 |
Correct |
170 ms |
84304 KB |
answer = 333 |
28 |
Correct |
194 ms |
85284 KB |
answer = 314 |
29 |
Correct |
171 ms |
84560 KB |
answer = 322 |
30 |
Correct |
172 ms |
85628 KB |
answer = 339 |
31 |
Correct |
176 ms |
84308 KB |
answer = 351 |
32 |
Correct |
255 ms |
86360 KB |
answer = 1 |
33 |
Correct |
248 ms |
85928 KB |
answer = 1 |
34 |
Correct |
257 ms |
85588 KB |
answer = 1 |
35 |
Correct |
249 ms |
86100 KB |
answer = 1 |
36 |
Correct |
242 ms |
85396 KB |
answer = 1 |
37 |
Correct |
52 ms |
4944 KB |
answer = 1 |
38 |
Correct |
49 ms |
4948 KB |
answer = 1 |
39 |
Correct |
52 ms |
4916 KB |
answer = 1 |
40 |
Correct |
56 ms |
4744 KB |
answer = 1 |
41 |
Correct |
812 ms |
2492 KB |
answer = 6296 |
42 |
Correct |
824 ms |
2488 KB |
answer = 6267 |
43 |
Correct |
824 ms |
2488 KB |
answer = 6264 |
44 |
Correct |
814 ms |
2644 KB |
answer = 6384 |
45 |
Correct |
828 ms |
2492 KB |
answer = 6272 |
46 |
Correct |
810 ms |
2504 KB |
answer = 6177 |
47 |
Correct |
805 ms |
2504 KB |
answer = 6144 |
48 |
Correct |
869 ms |
2644 KB |
answer = 6272 |
49 |
Correct |
831 ms |
2516 KB |
answer = 6241 |
50 |
Correct |
844 ms |
2640 KB |
answer = 6169 |
51 |
Correct |
668 ms |
2592 KB |
answer = 1 |
52 |
Correct |
667 ms |
2644 KB |
answer = 1 |
53 |
Correct |
657 ms |
2396 KB |
answer = 1 |
54 |
Correct |
653 ms |
2392 KB |
answer = 1 |
55 |
Correct |
671 ms |
2540 KB |
answer = 1 |
56 |
Correct |
1010 ms |
2444 KB |
answer = 1426 |
57 |
Correct |
1026 ms |
2448 KB |
answer = 1427 |
58 |
Correct |
966 ms |
2640 KB |
answer = 1428 |
59 |
Correct |
1006 ms |
2640 KB |
answer = 1427 |
60 |
Correct |
3213 ms |
93012 KB |
answer = 7034 |
61 |
Correct |
3240 ms |
93268 KB |
answer = 7045 |
62 |
Correct |
3222 ms |
93020 KB |
answer = 7147 |
63 |
Correct |
3363 ms |
93020 KB |
answer = 7038 |
64 |
Correct |
3309 ms |
93016 KB |
answer = 7169 |
65 |
Correct |
3276 ms |
93028 KB |
answer = 6735 |
66 |
Correct |
3267 ms |
92688 KB |
answer = 6713 |
67 |
Correct |
3303 ms |
92856 KB |
answer = 6748 |
68 |
Correct |
3287 ms |
92688 KB |
answer = 6607 |
69 |
Correct |
3326 ms |
92696 KB |
answer = 6722 |
70 |
Correct |
4926 ms |
93232 KB |
answer = 1 |
71 |
Correct |
5120 ms |
93000 KB |
answer = 1 |
72 |
Correct |
5077 ms |
92896 KB |
answer = 1 |
73 |
Correct |
5108 ms |
92984 KB |
answer = 1 |
74 |
Correct |
5021 ms |
92968 KB |
answer = 1 |
75 |
Correct |
1845 ms |
52072 KB |
answer = 1 |
76 |
Correct |
1895 ms |
52384 KB |
answer = 1 |
77 |
Correct |
1756 ms |
52436 KB |
answer = 1 |
78 |
Correct |
1751 ms |
51900 KB |
answer = 1 |
79 |
Correct |
1624 ms |
37220 KB |
answer = 21 |
80 |
Correct |
2299 ms |
59368 KB |
answer = 7 |
81 |
Correct |
2959 ms |
77784 KB |
answer = 3 |
82 |
Correct |
2961 ms |
88396 KB |
answer = 2 |
83 |
Correct |
2443 ms |
80252 KB |
answer = 1 |
84 |
Correct |
1919 ms |
61932 KB |
answer = 1 |
85 |
Correct |
1705 ms |
52156 KB |
answer = 1 |
86 |
Correct |
1462 ms |
37252 KB |
answer = 11 |
87 |
Correct |
2103 ms |
59456 KB |
answer = 11 |
88 |
Correct |
2787 ms |
78328 KB |
answer = 6 |
89 |
Correct |
2923 ms |
88220 KB |
answer = 4 |
90 |
Correct |
2434 ms |
80280 KB |
answer = 2 |
91 |
Correct |
1936 ms |
61940 KB |
answer = 2 |
92 |
Correct |
1679 ms |
52168 KB |
answer = 2 |
93 |
Correct |
3256 ms |
93024 KB |
answer = 7211 |
94 |
Correct |
3257 ms |
93028 KB |
answer = 7032 |
95 |
Correct |
3304 ms |
93024 KB |
answer = 7092 |
96 |
Correct |
4431 ms |
92892 KB |
answer = 14167 |
97 |
Correct |
4396 ms |
92980 KB |
answer = 14159 |
98 |
Correct |
4461 ms |
92980 KB |
answer = 14125 |
99 |
Correct |
4383 ms |
92988 KB |
answer = 14121 |
100 |
Correct |
4273 ms |
92984 KB |
answer = 14010 |
101 |
Correct |
4317 ms |
92980 KB |
answer = 13976 |
102 |
Correct |
1710 ms |
52080 KB |
answer = 3 |
103 |
Correct |
1998 ms |
62308 KB |
answer = 2 |
104 |
Correct |
2478 ms |
80352 KB |
answer = 3 |
105 |
Correct |
1615 ms |
51400 KB |
answer = 2 |
106 |
Correct |
1638 ms |
61912 KB |
answer = 3 |
107 |
Correct |
1998 ms |
88292 KB |
answer = 4 |
108 |
Correct |
1835 ms |
77912 KB |
answer = 5 |
109 |
Correct |
1352 ms |
59796 KB |
answer = 8 |
110 |
Correct |
1029 ms |
37460 KB |
answer = 22 |
111 |
Correct |
3281 ms |
93096 KB |
answer = 6760 |
112 |
Correct |
3352 ms |
93032 KB |
answer = 6788 |
113 |
Correct |
3296 ms |
92952 KB |
answer = 6632 |