Submission #494726

#TimeUsernameProblemLanguageResultExecution timeMemory
494726dannyboy20031204DEL13 (info1cup18_del13)C++17
15 / 100
59 ms4416 KiB
#include <bits/stdc++.h> #define ll long long #define fi first #define se second #define mp make_pair using namespace std; void db() {cout << endl;} template <typename T, typename ...U> void db(T a, U ...b) { //return; cout << a << ' ', db(b...); } #ifdef Cloud #define file freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout) #else #define file ios::sync_with_stdio(false); cin.tie(0) #endif const int N = 3001; void solve(){ int n, q; cin >> n >> q; bool stay[n + 1]{}; for (int p, i = 0; i < q; i++) cin >> p, stay[p] = 1; set<pair<int, int>> s; vector<int> ans; for (int i = 1; i <= n; i++){ if (!stay[i] and s.size() >= 2){ auto u = *(--s.end()); auto v = *(--(--s.end())); if (!u.se and !v.se){ ans.push_back(u.fi); s.erase(u); s.erase(v); } } s.insert({i, stay[i]}); } for (auto i : s){ if (i.se == 0) continue; for (int t = 0; t < 2; t++){ auto it = s.upper_bound(i); auto it2 = s.lower_bound(i); if (it == s.end() or it2 == s.begin()) continue; it2--; auto u = *it2, v = *it; if (u.se or v.se) continue; ans.push_back(i.fi); s.erase(u); s.erase(v); } } for (auto i : s){ if (i.se == 0){ cout << -1 << '\n'; return; } } cout << ans.size() << '\n'; for (int i : ans) cout << i << ' '; cout << '\n'; } signed main(){ file; int t; cin >> t; while (t--) solve(); }
#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...