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