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