Submission #1307126

#TimeUsernameProblemLanguageResultExecution timeMemory
13071261anLongest beautiful sequence (IZhO17_subsequence)C++20
23 / 100
190 ms327680 KiB
#include <bits/stdc++.h> using namespace std; int main () { 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]; vector<int> dp(n, 1), prev(n); vector<vector<int>> bc(n, vector<int>(n)); for (int i = 0; i < n; i++) prev[i] = i; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) bc[i][j] = __builtin_popcount(a[i] & a[j]); for (int i = 1; i < n; i++) { for (int j = i - 1; j >= 0; j--) { if (1 + dp[j] > dp[i] && bc[i][j] == k[i]) { dp[i] = 1 + dp[j]; prev[i] = j; } } } auto largest = max_element(dp.begin(), dp.end()); int idx = distance(dp.begin(), largest); stack<int> st; printf("%d\n", *largest); while (true) { st.push(idx); if (prev[idx] == idx) break; idx = prev[idx]; } while (!st.empty()) { printf("%d ", st.top() + 1); st.pop(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...