Submission #333590

#TimeUsernameProblemLanguageResultExecution timeMemory
333590amunduzbaevLongest beautiful sequence (IZhO17_subsequence)C++14
0 / 100
1 ms364 KiB
#include <bits/stdc++.h> using namespace std; #define ff first #define ss second #define pb push_back #define mp make_pair #define ub upper_bound #define lb lower_bound #define ll long long #define ld long double #define pii pair<int, int> #define sz(x) (int)x.size() #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(),x.rend() #define prc(n) fixed << setprecision(n) #define fastios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define pi acos(-1); const int inf = 1e9+7; const int N = 505; void solve(){ fastios 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<pii>dp(n, {-1,-1}); for(int i=1;i<n;i++){ for(int j=0;j<i;j++){ if(__builtin_popcount(a[i] & a[j]) == k[i]){ if(dp[i].ff == 0){ dp[i].ff = 1; dp[i].ss = j; } else if(dp[i].ff < dp[j].ff + 1){ dp[i].ff = dp[j].ff + 1; dp[i].ss = j; } } } } int ans = 0,s = 1; for(int i=0;i<n;i++){ if(dp[i].ff > ans){ s = i; ans = dp[i].ff; } } vector<int>aa; aa.pb(s); while(true){ aa.pb(dp[s].ss); s = dp[s].ss; if(s == -1) break; } cout<<sz(aa)-1<<"\n"; for(int i=sz(aa)-2;i>=0;i--){ cout<<aa[i]+1<<" "; } return; } int main(){ fastios int t = 1; //cin>>t; while(t--) solve(); 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...