제출 #1141932

#제출 시각아이디문제언어결과실행 시간메모리
1141932AgageldiDEL13 (info1cup18_del13)C++20
30 / 100
1095 ms328 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(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 = 1; 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(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(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...