Submission #1174640

#TimeUsernameProblemLanguageResultExecution timeMemory
1174640hengliaoDEL13 (info1cup18_del13)C++20
0 / 100
3 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 mxN=18;

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

void solve(){
    ll n, m;
    cin>>n>>m;
    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)<n){
        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);

    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];
        }
    }

    int t;
    cin>>t;
    while(t--){
        solve();
    }

    

    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...