#include <bits/stdc++.h>
using namespace std;
#define log(x) (63^__builtin_clzll(x))
//#define endl '\n'
#define all(x) (x).begin() , (x).end()
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);
int M = 1 << 10;
vector<vector<vector<pair<int, int>>>> dp(M, vector<vector<pair<int, int>>>(M, vector<pair<int, int>>(11, {0, 0})));
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));
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:41:27: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
41 | assert(indices.size() == ans);
| ~~~~~~~~~~~~~~~^~~~~~
subsequence.cpp: At global scope:
subsequence.cpp:52:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
52 | main() {
| ^~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
76 ms |
123712 KB |
answer = 4 |
2 |
Correct |
77 ms |
123472 KB |
answer = 1 |
3 |
Correct |
76 ms |
123672 KB |
answer = 2 |
4 |
Correct |
78 ms |
123516 KB |
answer = 1 |
5 |
Correct |
76 ms |
123580 KB |
answer = 2 |
6 |
Correct |
77 ms |
123476 KB |
answer = 1 |
7 |
Correct |
80 ms |
123476 KB |
answer = 1 |
8 |
Correct |
94 ms |
123472 KB |
answer = 3 |
9 |
Correct |
77 ms |
123472 KB |
answer = 2 |
10 |
Correct |
77 ms |
123568 KB |
answer = 3 |
11 |
Correct |
77 ms |
123476 KB |
answer = 2 |
12 |
Correct |
84 ms |
123728 KB |
answer = 3 |
13 |
Correct |
88 ms |
123516 KB |
answer = 2 |
14 |
Correct |
75 ms |
123508 KB |
answer = 1 |
15 |
Correct |
76 ms |
123696 KB |
answer = 1 |
16 |
Correct |
84 ms |
123728 KB |
answer = 1 |
17 |
Correct |
88 ms |
123472 KB |
answer = 1 |
18 |
Correct |
75 ms |
123472 KB |
answer = 1 |
19 |
Correct |
77 ms |
123476 KB |
answer = 1 |
20 |
Correct |
77 ms |
123680 KB |
answer = 1 |
21 |
Correct |
77 ms |
123476 KB |
answer = 1 |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
76 ms |
123712 KB |
answer = 4 |
2 |
Correct |
77 ms |
123472 KB |
answer = 1 |
3 |
Correct |
76 ms |
123672 KB |
answer = 2 |
4 |
Correct |
78 ms |
123516 KB |
answer = 1 |
5 |
Correct |
76 ms |
123580 KB |
answer = 2 |
6 |
Correct |
77 ms |
123476 KB |
answer = 1 |
7 |
Correct |
80 ms |
123476 KB |
answer = 1 |
8 |
Correct |
94 ms |
123472 KB |
answer = 3 |
9 |
Correct |
77 ms |
123472 KB |
answer = 2 |
10 |
Correct |
77 ms |
123568 KB |
answer = 3 |
11 |
Correct |
77 ms |
123476 KB |
answer = 2 |
12 |
Correct |
84 ms |
123728 KB |
answer = 3 |
13 |
Correct |
88 ms |
123516 KB |
answer = 2 |
14 |
Correct |
75 ms |
123508 KB |
answer = 1 |
15 |
Correct |
76 ms |
123696 KB |
answer = 1 |
16 |
Correct |
84 ms |
123728 KB |
answer = 1 |
17 |
Correct |
88 ms |
123472 KB |
answer = 1 |
18 |
Correct |
75 ms |
123472 KB |
answer = 1 |
19 |
Correct |
77 ms |
123476 KB |
answer = 1 |
20 |
Correct |
77 ms |
123680 KB |
answer = 1 |
21 |
Correct |
77 ms |
123476 KB |
answer = 1 |
22 |
Correct |
386 ms |
123728 KB |
answer = 358 |
23 |
Correct |
372 ms |
123812 KB |
answer = 336 |
24 |
Correct |
356 ms |
123816 KB |
answer = 339 |
25 |
Correct |
361 ms |
123988 KB |
answer = 357 |
26 |
Correct |
368 ms |
123732 KB |
answer = 354 |
27 |
Correct |
358 ms |
123984 KB |
answer = 333 |
28 |
Correct |
375 ms |
123820 KB |
answer = 314 |
29 |
Correct |
360 ms |
123984 KB |
answer = 322 |
30 |
Correct |
354 ms |
123728 KB |
answer = 339 |
31 |
Correct |
363 ms |
123812 KB |
answer = 351 |
32 |
Correct |
507 ms |
123812 KB |
answer = 1 |
33 |
Correct |
486 ms |
123736 KB |
answer = 1 |
34 |
Correct |
489 ms |
123820 KB |
answer = 1 |
35 |
Correct |
498 ms |
123984 KB |
answer = 1 |
36 |
Correct |
521 ms |
123704 KB |
answer = 1 |
37 |
Correct |
448 ms |
123988 KB |
answer = 1 |
38 |
Correct |
466 ms |
123732 KB |
answer = 1 |
39 |
Correct |
442 ms |
123828 KB |
answer = 1 |
40 |
Correct |
468 ms |
124048 KB |
answer = 1 |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
76 ms |
123712 KB |
answer = 4 |
2 |
Correct |
77 ms |
123472 KB |
answer = 1 |
3 |
Correct |
76 ms |
123672 KB |
answer = 2 |
4 |
Correct |
78 ms |
123516 KB |
answer = 1 |
5 |
Correct |
76 ms |
123580 KB |
answer = 2 |
6 |
Correct |
77 ms |
123476 KB |
answer = 1 |
7 |
Correct |
80 ms |
123476 KB |
answer = 1 |
8 |
Correct |
94 ms |
123472 KB |
answer = 3 |
9 |
Correct |
77 ms |
123472 KB |
answer = 2 |
10 |
Correct |
77 ms |
123568 KB |
answer = 3 |
11 |
Correct |
77 ms |
123476 KB |
answer = 2 |
12 |
Correct |
84 ms |
123728 KB |
answer = 3 |
13 |
Correct |
88 ms |
123516 KB |
answer = 2 |
14 |
Correct |
75 ms |
123508 KB |
answer = 1 |
15 |
Correct |
76 ms |
123696 KB |
answer = 1 |
16 |
Correct |
84 ms |
123728 KB |
answer = 1 |
17 |
Correct |
88 ms |
123472 KB |
answer = 1 |
18 |
Correct |
75 ms |
123472 KB |
answer = 1 |
19 |
Correct |
77 ms |
123476 KB |
answer = 1 |
20 |
Correct |
77 ms |
123680 KB |
answer = 1 |
21 |
Correct |
77 ms |
123476 KB |
answer = 1 |
22 |
Correct |
386 ms |
123728 KB |
answer = 358 |
23 |
Correct |
372 ms |
123812 KB |
answer = 336 |
24 |
Correct |
356 ms |
123816 KB |
answer = 339 |
25 |
Correct |
361 ms |
123988 KB |
answer = 357 |
26 |
Correct |
368 ms |
123732 KB |
answer = 354 |
27 |
Correct |
358 ms |
123984 KB |
answer = 333 |
28 |
Correct |
375 ms |
123820 KB |
answer = 314 |
29 |
Correct |
360 ms |
123984 KB |
answer = 322 |
30 |
Correct |
354 ms |
123728 KB |
answer = 339 |
31 |
Correct |
363 ms |
123812 KB |
answer = 351 |
32 |
Correct |
507 ms |
123812 KB |
answer = 1 |
33 |
Correct |
486 ms |
123736 KB |
answer = 1 |
34 |
Correct |
489 ms |
123820 KB |
answer = 1 |
35 |
Correct |
498 ms |
123984 KB |
answer = 1 |
36 |
Correct |
521 ms |
123704 KB |
answer = 1 |
37 |
Correct |
448 ms |
123988 KB |
answer = 1 |
38 |
Correct |
466 ms |
123732 KB |
answer = 1 |
39 |
Correct |
442 ms |
123828 KB |
answer = 1 |
40 |
Correct |
468 ms |
124048 KB |
answer = 1 |
41 |
Correct |
3665 ms |
125460 KB |
answer = 6296 |
42 |
Correct |
3460 ms |
125448 KB |
answer = 6267 |
43 |
Correct |
3537 ms |
125412 KB |
answer = 6264 |
44 |
Correct |
3638 ms |
125416 KB |
answer = 6384 |
45 |
Correct |
3583 ms |
125264 KB |
answer = 6272 |
46 |
Correct |
3187 ms |
125412 KB |
answer = 6177 |
47 |
Correct |
3372 ms |
125416 KB |
answer = 6144 |
48 |
Correct |
3225 ms |
125412 KB |
answer = 6272 |
49 |
Correct |
3005 ms |
125264 KB |
answer = 6241 |
50 |
Correct |
3172 ms |
125416 KB |
answer = 6169 |
51 |
Correct |
805 ms |
125416 KB |
answer = 1 |
52 |
Correct |
818 ms |
125412 KB |
answer = 1 |
53 |
Correct |
819 ms |
125320 KB |
answer = 1 |
54 |
Correct |
777 ms |
125268 KB |
answer = 1 |
55 |
Correct |
791 ms |
125416 KB |
answer = 1 |
56 |
Correct |
4462 ms |
125416 KB |
answer = 1426 |
57 |
Correct |
3988 ms |
125416 KB |
answer = 1427 |
58 |
Correct |
4321 ms |
125416 KB |
answer = 1428 |
59 |
Correct |
4444 ms |
125412 KB |
answer = 1427 |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
76 ms |
123712 KB |
answer = 4 |
2 |
Correct |
77 ms |
123472 KB |
answer = 1 |
3 |
Correct |
76 ms |
123672 KB |
answer = 2 |
4 |
Correct |
78 ms |
123516 KB |
answer = 1 |
5 |
Correct |
76 ms |
123580 KB |
answer = 2 |
6 |
Correct |
77 ms |
123476 KB |
answer = 1 |
7 |
Correct |
80 ms |
123476 KB |
answer = 1 |
8 |
Correct |
94 ms |
123472 KB |
answer = 3 |
9 |
Correct |
77 ms |
123472 KB |
answer = 2 |
10 |
Correct |
77 ms |
123568 KB |
answer = 3 |
11 |
Correct |
77 ms |
123476 KB |
answer = 2 |
12 |
Correct |
84 ms |
123728 KB |
answer = 3 |
13 |
Correct |
88 ms |
123516 KB |
answer = 2 |
14 |
Correct |
75 ms |
123508 KB |
answer = 1 |
15 |
Correct |
76 ms |
123696 KB |
answer = 1 |
16 |
Correct |
84 ms |
123728 KB |
answer = 1 |
17 |
Correct |
88 ms |
123472 KB |
answer = 1 |
18 |
Correct |
75 ms |
123472 KB |
answer = 1 |
19 |
Correct |
77 ms |
123476 KB |
answer = 1 |
20 |
Correct |
77 ms |
123680 KB |
answer = 1 |
21 |
Correct |
77 ms |
123476 KB |
answer = 1 |
22 |
Correct |
386 ms |
123728 KB |
answer = 358 |
23 |
Correct |
372 ms |
123812 KB |
answer = 336 |
24 |
Correct |
356 ms |
123816 KB |
answer = 339 |
25 |
Correct |
361 ms |
123988 KB |
answer = 357 |
26 |
Correct |
368 ms |
123732 KB |
answer = 354 |
27 |
Correct |
358 ms |
123984 KB |
answer = 333 |
28 |
Correct |
375 ms |
123820 KB |
answer = 314 |
29 |
Correct |
360 ms |
123984 KB |
answer = 322 |
30 |
Correct |
354 ms |
123728 KB |
answer = 339 |
31 |
Correct |
363 ms |
123812 KB |
answer = 351 |
32 |
Correct |
507 ms |
123812 KB |
answer = 1 |
33 |
Correct |
486 ms |
123736 KB |
answer = 1 |
34 |
Correct |
489 ms |
123820 KB |
answer = 1 |
35 |
Correct |
498 ms |
123984 KB |
answer = 1 |
36 |
Correct |
521 ms |
123704 KB |
answer = 1 |
37 |
Correct |
448 ms |
123988 KB |
answer = 1 |
38 |
Correct |
466 ms |
123732 KB |
answer = 1 |
39 |
Correct |
442 ms |
123828 KB |
answer = 1 |
40 |
Correct |
468 ms |
124048 KB |
answer = 1 |
41 |
Correct |
3665 ms |
125460 KB |
answer = 6296 |
42 |
Correct |
3460 ms |
125448 KB |
answer = 6267 |
43 |
Correct |
3537 ms |
125412 KB |
answer = 6264 |
44 |
Correct |
3638 ms |
125416 KB |
answer = 6384 |
45 |
Correct |
3583 ms |
125264 KB |
answer = 6272 |
46 |
Correct |
3187 ms |
125412 KB |
answer = 6177 |
47 |
Correct |
3372 ms |
125416 KB |
answer = 6144 |
48 |
Correct |
3225 ms |
125412 KB |
answer = 6272 |
49 |
Correct |
3005 ms |
125264 KB |
answer = 6241 |
50 |
Correct |
3172 ms |
125416 KB |
answer = 6169 |
51 |
Correct |
805 ms |
125416 KB |
answer = 1 |
52 |
Correct |
818 ms |
125412 KB |
answer = 1 |
53 |
Correct |
819 ms |
125320 KB |
answer = 1 |
54 |
Correct |
777 ms |
125268 KB |
answer = 1 |
55 |
Correct |
791 ms |
125416 KB |
answer = 1 |
56 |
Correct |
4462 ms |
125416 KB |
answer = 1426 |
57 |
Correct |
3988 ms |
125416 KB |
answer = 1427 |
58 |
Correct |
4321 ms |
125416 KB |
answer = 1428 |
59 |
Correct |
4444 ms |
125412 KB |
answer = 1427 |
60 |
Correct |
5587 ms |
125672 KB |
answer = 7034 |
61 |
Correct |
5648 ms |
125672 KB |
answer = 7045 |
62 |
Correct |
5397 ms |
125720 KB |
answer = 7147 |
63 |
Correct |
5418 ms |
125664 KB |
answer = 7038 |
64 |
Correct |
5557 ms |
125672 KB |
answer = 7169 |
65 |
Correct |
5633 ms |
125672 KB |
answer = 6735 |
66 |
Correct |
5272 ms |
125672 KB |
answer = 6713 |
67 |
Correct |
5407 ms |
125672 KB |
answer = 6748 |
68 |
Correct |
5325 ms |
125664 KB |
answer = 6607 |
69 |
Correct |
5394 ms |
125680 KB |
answer = 6722 |
70 |
Execution timed out |
6009 ms |
125520 KB |
Time limit exceeded |
71 |
Halted |
0 ms |
0 KB |
- |