Submission #333602

#TimeUsernameProblemLanguageResultExecution timeMemory
333602amunduzbaevLongest beautiful sequence (IZhO17_subsequence)C++14
7 / 100
53 ms492 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 == -1){ dp[j].ff = 1; } if(dp[i].ff < dp[j].ff + 1){ dp[i].ff = dp[j].ff + 1; dp[i].ss = j; } } } } int ans = 0, s = 0; for(int i=0;i<n;i++){ if(dp[i].ff > ans){ ans = dp[i].ff; s = i; } } vector<int>xx; while(s != -1){ xx.pb(s+1); s = dp[s].ss; } cout<<sz(xx)<<"\n"; for(int i = sz(xx)-1; i >= 0; i--){ cout<<xx[i]<<" "; }cout<<"\n"; 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...