Submission #881998

#TimeUsernameProblemLanguageResultExecution timeMemory
881998antonLongest beautiful sequence (IZhO17_subsequence)C++17
23 / 100
6039 ms5728 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define pii pair<int, int> const int MAX_N = 1e5; const int BAR = 2; const int MAX_X = 20; int n; pii dp[MAX_N], back[MAX_N]; int a[MAX_N], k[MAX_N]; int popcount(int i){ if(i==0){ return 0; } return popcount(i & (i-1)) +1; } void display(pii u){ //cout<<u.first<<" "<<u.second<<endl; if(u.second!=-1){ cout<<u.second+1<<" "; display(back[u.second]); } } signed main(){ cin>>n; for(int i = 0; i<n; i++){ cin>>a[i]; } for(int i = 0; i<n; i++){ cin>>k[i]; } pii ans = pii(0, n-1); for(int i = n-1; i>=0; i--){ pii res =pii(0, -1); for(int j = i+1; j<n; j++){ if(popcount(a[i]&a[j]) == k[j]){ res = max(res, dp[j]); } } back[i] = res; res.first+=1; //cout<<res.first<<" "<<res.second<<endl; res.second= i; ans = max(ans, res); dp[i] = res; } cout<<ans.first<<endl; display(ans); cout<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...