Submission #1125263

#TimeUsernameProblemLanguageResultExecution timeMemory
1125263Joseph0121Longest beautiful sequence (IZhO17_subsequence)C++20
23 / 100
45 ms328 KiB
#include <bits/stdc++.h> using namespace std; //dp[N] = longest subsequence ending with Nth number (so im = N) const int maxn = 5e3+5; int N; int from[maxn]; int a[maxn], k[maxn],dp[maxn]; int main() { cin>>N; for(int i = 1;i<=N;i++) cin>>a[i]; for(int i = 1;i<=N;i++) cin>>k[i]; for(int i = 1;i<=N;i++){ dp[i] = 1; } dp[1] = 1; for(int i = 2;i<=N;i++){ for(int j = 1;j<=i-1;j++){ if(__builtin_popcount(a[i]&a[j]) == k[i]){ if(dp[j]+1 > dp[i]){ dp[i] = dp[j]+1; from[i] = j; } } } } // for(int i = 1;i<=N;i++) cout<<from[i]<<" "; // cout<<endl; int idx = 1; for(int i = 2;i<=N;i++){ if(dp[i] > dp[idx]) idx = i; } vector<int> ans; // cout<<idx<<endl; while(dp[idx]!=1){ ans.push_back(idx); idx = from[idx]; } ans.push_back(idx); reverse(ans.begin(),ans.end()); cout<<ans.size()<<endl; for(auto i: ans) cout<<i<<" "; // for(int i = 1;i<=N;i++){ // cout<<ans[i]<<" "; // } // your code goes here return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...