Submission #1326566

#TimeUsernameProblemLanguageResultExecution timeMemory
1326566ayxanesedzade10Longest beautiful sequence (IZhO17_subsequence)C++20
23 / 100
6092 ms3488 KiB
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define all(x) x.begin(),x.end()
#define ld long double
using namespace std;
int main()
{
    ll n;cin>>n;
    ll a[n+5],k[n+5];
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    for(int i=1;i<=n;i++){
        cin>>k[i];
    }
    ll dp[n+5];
    dp[0]=0;
    dp[1]=1;
    ll mx=1,par[n+5],ind=1;
    par[1]=0;
    for(int i=2;i<=n;i++){
        dp[i]=1;
        par[i]=0;
        for(int j=1;j<i;j++){
            ll cnt=0;
            ll c=a[i]&a[j];
            for(int bt=0;(1<<bt)<=a[i];bt++){
                if(c&(1<<bt)) cnt++;
            }
            if(cnt==k[i]){
                if(dp[j]+1>dp[i]){
                    dp[i]=dp[j]+1;par[i]=j;
                }
            }
        }
        if(dp[i]>mx){
            mx=dp[i];ind=i;
        }
    }
    vector<ll>v;
    while(ind!=0){
        v.pb(ind);ind=par[ind];
    }
    cout<<v.size()<<endl;
    reverse(all(v));
    for(auto to:v) cout<<to<<" ";
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...