Submission #501765

#TimeUsernameProblemLanguageResultExecution timeMemory
501765Ronin13Longest beautiful sequence (IZhO17_subsequence)C++14
23 / 100
6061 ms1868 KiB
#include<bits/stdc++.h>
#define ll long long
#define ull unsigned ll
#define pll pair<ll,ll>
#define pb push_back
#define epb emplace_back
#define f first
#define s second
#define pii pair<int,int>
#define inf 1e9+1
#define linf 1e18+1
using namespace std;

void solve(){
    int n;cin>>n;
    int a[n+1];
    int k[n+1];
    int d[n+1],d1[n+1];
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    for(int i=1;i<=n;i++){
        cin>>k[i];
    }
    for(int i=1;i<=n;i++){
        d[i]=1;
        d1[i]=-1;
    }
    for(int i=2;i<=n;i++){
        for(int j=i-1;j>=1;j--){
            int x=a[i]&a[j];
            if(__builtin_popcount(x)==k[i]){
                if(d[j]+1>d[i]){
                    d[i]=d[j]+1;
                    d1[i]=j;
                }
            }
        }
    }
    int mx=0,mxi;
    for(int i=1;i<=n;i++){
        if(d[i]>mx){
            mx=d[i];
            mxi=i;
        }
    }
    vector<int>vec;
    while(mxi!=-1){
        vec.pb(mxi);
        mxi=d1[mxi];
    }
    cout<<vec.size()<<"\n";
    reverse(vec.begin(),vec.end());
    for(int to:vec)cout<<to<<' ';
}

int main(){
    ios_base::sync_with_stdio(false);cin.tie(0);
    int test=1;//cin>>test;
    while(test--)solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...