Submission #170140

#TimeUsernameProblemLanguageResultExecution timeMemory
170140nvmdavaLongest beautiful sequence (IZhO17_subsequence)C++17
0 / 100
2 ms388 KiB
#include <bits/stdc++.h>
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-Ofast")
#pragma GCC target("avx2,fma")
using namespace std;
#define ll long long
#define ff first
#define ss second
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
#define INF 0x3f3f3f3f
#define MOD 1000000007
#define N 100005

int a[N], k[N], ans[N], f[N];

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    int n;
    cin>>n;
    for(int i = 1; i <= n; ++i)
        cin>>a[i];
    for(int i = 1; i <= n; ++i){
        cin>>k[i];
        ans[1] = 1;
    }
    int mxid = 1;
    for(int i = 1; i <= n; ++i){
        for(int j = 1; j < i; ++j){
            if(__builtin_popcount(a[i] & a[j]) == k[i]){
                if(ans[i] <= ans[j]){
                    ans[i] = ans[j] + 1;
                    f[i] = j;
                }
            }
        }
        if(ans[i] > ans[mxid])
            mxid = i;
    }
    cout<<ans[mxid]<<'\n';
    vector<int> v;
    while(mxid){
        v.push_back(mxid);
        mxid = f[mxid];
    }
    while(!v.empty()){
        cout<<v.back()<<' ';
        v.pop_back();
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...