Submission #765535

#TimeUsernameProblemLanguageResultExecution timeMemory
765535Ahmed57Longest beautiful sequence (IZhO17_subsequence)C++17
0 / 100
3 ms700 KiB
#include<bits/stdc++.h> using namespace std; pair<int,int> dp[(1<<10)][(1<<10)][11]; int main(){ int n; cin>>n; int a[n+1],b[n+1]; for(int i = 1;i<=n;i++)cin>>a[i]; for(int i = 1;i<=n;i++)cin>>b[i]; int ans = 0 , strt = 0; int telp[n+1]; for(int i = 1;i<=n;i++){ int fi = a[i]>>10 , se = a[i]&((1<<10)-1); int an = 1; for(int mask = 0;mask<(1<<10);mask++){ int ne = __builtin_popcount(mask&fi); int neeeed = b[i]-ne; if(neeeed>=0&&neeeed<=10){ if(an<dp[mask][se][neeeed].first+1){ an = dp[mask][se][neeeed].first+1; telp[i] = dp[mask][se][neeeed].second; } } } for(int mask = 0;mask<(1<<10);mask++){ int ne = __builtin_popcount(mask&se); if(dp[fi][mask][ne].first<an){ dp[fi][mask][ne].first = an; dp[fi][mask][ne].second = i; } } if(ans<an){ ans = an; strt = i; } } vector<int> tmp; while(strt>0){ tmp.push_back(strt); strt = telp[strt]; } reverse(tmp.begin(),tmp.end()); cout<<ans<<endl; for(auto i:tmp){ cout<<i<<" "; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...