Submission #1269060

#TimeUsernameProblemLanguageResultExecution timeMemory
1269060tryharderforioi100Longest beautiful sequence (IZhO17_subsequence)C++17
40 / 100
6090 ms19216 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define endl "\n" ll pre[2000005]; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); ll t=1; //cin>>t; while(t--) { ll n; cin>>n; ll a[n],b[n],i; for(i=0;i<n;i++) { cin>>a[i]; } for(i=0;i<n;i++) { cin>>b[i]; } for(i=0;i<2000000;i++) { pre[i]=__builtin_popcount(i); } ll dp[n],prev[n]; fill(dp,dp+n,1); fill(prev,prev+n,-1); for(i=1;i<n;i++) { ll j; for(j=0;j<i;j++) { if(pre[a[i]&a[j]]==b[i]&&dp[i]<dp[j]+1) { dp[i]=dp[j]+1; prev[i]=j; } } } ll val=*max_element(dp,dp+n); for(i=0;i<n;i++) { if(dp[i]==val) { break; } } vector<ll>ans; while(i!=-1) { ans.push_back(i+1); i=prev[i]; } reverse(ans.begin(),ans.end()); cout<<ans.size()<<endl; for(i=0;i<ans.size();i++) { cout<<ans[i]<<" "; } cout<<endl; } #ifndef ONLINE_JUDGE cerr << "Time elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n"; #endif return 0; } // Author: tryharderforioi100
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...