제출 #1142027

#제출 시각아이디문제언어결과실행 시간메모리
1142027AgageldiDEL13 (info1cup18_del13)C++20
30 / 100
1093 ms524 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define N 600005 #define pb push_back #define ff first #define ss second #define all(x) x.begin(),x.end() #define sz(s) (int)s.size() #define pii pair<int,int> //mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); ll T, n, a[N], t, tr, vis[N]; set <int> s; vector <int> answer; void solve(int x,set<int> s) { if(tr) return; vector <int> v; v.clear(); for(auto i : s) { v.pb(i); } if(sz(v) == t) { tr = 1; cout << sz(answer) << '\n'; for(auto i : answer) { cout << i << " "; } cout << '\n'; return; } for(int i = x; i < sz(v) - 1; i++) { if(vis[v[i + 1]] == 1 || vis[v[i-1]] == 1) continue; s.erase(v[i - 1]); s.erase(v[i + 1]); answer.pb(v[i]); solve(max(i - 3, 1),s); answer.pop_back(); s.insert(v[i + 1]); s.insert(v[i - 1]); } } int main () { ios::sync_with_stdio(0);cin.tie(0); cin >> T; while(T--) { cin >> n >> t; s.clear(); tr = 0; answer.clear(); for(int i = 1; i <= n; i++) { s.insert(i); vis[i] = 0; } for(int i=1;i<=t;i++) { cin >> a[i]; vis[a[i]] = 1; } solve(1,s); if(!tr) cout << "-1\n"; } }
#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...