Submission #1174642

#TimeUsernameProblemLanguageResultExecution timeMemory
1174642hengliaoDEL13 (info1cup18_del13)C++20
30 / 100
5 ms2372 KiB
#include<bits/stdc++.h>
using namespace std;

#define F first
#define S second
#define pb push_back
#define vll vector<ll>
#define pll pair<ll, ll>

typedef long long ll;

const ll mxM=18;

ll mxN;

bool dp[(1LL<<mxM)];
ll par[(1LL<<mxM)];
ll c[(1LL<<mxM)];

void solve(ll t){
    ll m;
    cin>>mxN>>m;
    if(t==0){
        dp[(1LL<<mxN)-1]=1;
        par[(1LL<<mxN)-1]=-1;
        c[(1LL<<mxN)-1]=-1;
        for(ll mask=(1LL<<mxN)-1;mask>=0;mask--){
            if(!dp[mask]) continue;
            vll tep;
            for(ll i=0;i<mxN;i++){
                if((mask>>i)&1){
                    tep.pb(i);
                }
            }
            for(ll i=1;i<(ll) tep.size()-1;i++){
                ll nxt=mask^(1LL<<tep[i-1]);
                nxt^=(1LL<<tep[i+1]);
                dp[nxt]=1;
                par[nxt]=mask;
                c[nxt]=tep[i];
            }
        }
    }
    ll mask=0;
    for(ll i=0;i<m;i++){
        ll tar;
        cin>>tar;
        tar--;
        mask|=(1LL<<tar);
    }
    if(!dp[mask]){
        cout<<-1<<'\n';
        return;
    }
    vll re;
    while(__builtin_popcount(mask)<mxN){
        re.pb(c[mask]);
        mask=par[mask];
    }
    reverse(re.begin(), re.end());
    cout<<re.size()<<'\n';
    for(auto &it:re){
        cout<<it+1<<' ';
    }
    cout<<'\n';
}

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

    

    int t;
    cin>>t;
    for(ll i=0;i<t;i++){
        solve(i);
    }

    

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...