Submission #170151

#TimeUsernameProblemLanguageResultExecution timeMemory
170151nvmdavaLongest beautiful sequence (IZhO17_subsequence)C++17
23 / 100
6086 ms6480 KiB
#include <bits/stdc++.h>
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("Ofast")
#pragma GCC target("fma,avx2")
using namespace std;
#define ll long long
#define ff first
#define ss second
#define INF 0x3f3f3f3f
#define MOD 1000000007
#define N 100005

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

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

    int n;
    cin>>n;
    for(int i = 1; i <= 1048576; ++i){
        bit[i] = bit[-i & i ^ i] + 1;
    }
    for(int i = 1; i <= n; ++i)
        cin>>a[i];
    for(int i = 1; i <= n; ++i){
        cin>>k[i];
        ans[i] = 1;
    }
    int mxid = 1;
    for(int i = 1; i <= n; ++i){
        for(int j = 1; j < i; ++j){
            if(bit[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();
    }
}

Compilation message (stderr)

subsequence.cpp: In function 'int main()':
subsequence.cpp:24:25: warning: suggest parentheses around arithmetic in operand of '^' [-Wparentheses]
         bit[i] = bit[-i & i ^ i] + 1;
                      ~~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...