Submission #1227689

#TimeUsernameProblemLanguageResultExecution timeMemory
1227689m5588ohammedLongest beautiful sequence (IZhO17_subsequence)C++20
0 / 100
1 ms1344 KiB
#include <bits/stdc++.h> using namespace std; #define endl "\n" #define mod 1000000009 #define int long long #define double long double array <int,2> dp[100001]; int pos[1025][1025][20]; int arr[200001],k[200001],n; int idx,ans; signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin>>n; for(int i=1;i<=n;i++) cin>>arr[i]; for(int i=1;i<=n;i++) cin>>k[i]; for(int i=1;i<=n;i++){ int x=0,y=0; for(int bt=0;bt<10;bt++) if((arr[i]&(1ll<<bt))!=0) x+=(1ll<<bt); for(int bt=10;bt<20;bt++) if((arr[i]&(1ll<<bt))!=0) y+=(1ll<<bt); for(int mask=0;mask<1024;mask++){ int d=(k[i]-__builtin_popcount(mask&x)); if(d<0) continue; dp[i]=max(dp[i],{dp[pos[mask][y][d]][0]+1,pos[mask][y][d]}); } for(int mask=0;mask<1024;mask++){ int d=__builtin_popcount(mask&y); if(dp[i][0]>dp[pos[x][mask][d]][0]){ pos[x][mask][d]=i; } } if(ans<dp[i][0]){ ans=dp[i][0]; idx=i; } //cout<<pos[1][0][<<endl; } cout<<ans<<endl; vector <int> v; while(idx!=0){ v.push_back(idx); idx=dp[idx][1]; } reverse(v.begin(),v.end()); for(int i:v) cout<<i<<" "; 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...