# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
317538 | 2020-10-30T01:51:32 Z | casperwang | DEL13 (info1cup18_del13) | C++14 | 14 ms | 2312 KB |
#include <bits/stdc++.h> #define pb push_back #define pii pair<int,int> #define ff first #define ss second using namespace std; const int MAXN = 100000; stack <int> ans; bool solve(vector <pii> &arr) { vector <int> cnt(arr.size()+1); for (int i = 0; i < arr.size(); i++) cnt[i] = arr[i].ss - arr[i].ff + 1; for (int i = 0; i+1 < arr.size(); i++) { if (cnt[i] % 2) { ans.push(arr[i].ss+1); cnt[i]--, cnt[i+1]--; } } if (cnt[arr.size()-1] % 2) return 0; stack <int> tmp; for (int i = 0; i <= arr.size(); i++) { if (cnt[i] && arr[i].ss - arr[i].ff + 1 == 2) { tmp.push(i); } else if (!cnt[i]) { while (tmp.size()) { ans.push(arr[tmp.top()].ff-1); ans.push(arr[tmp.top()].ff-1); cnt[tmp.top()] -= 2; if (tmp.size() > 1) { tmp.pop(); cnt[tmp.top()] -= 2; tmp.pop(); } else { if (!tmp.top() || !cnt[tmp.top()-1]) return 0; cnt[tmp.top()-1] -= 2; tmp.pop(); } } } else { if (tmp.size() % 2) { ans.push(arr[i].ff-1); ans.push(arr[i].ff-1); cnt[i] -= 2; cnt[tmp.top()] -= 2; tmp.pop(); } while (tmp.size()) { ans.push(arr[tmp.top()].ff-1); ans.push(arr[tmp.top()].ff-1); cnt[tmp.top()] -= 2; tmp.pop(); cnt[tmp.top()] -= 2; tmp.pop(); } if (i < arr.size() && cnt[i] == arr[i].ss - arr[i].ff + 1) { if (i && cnt[i-1]) { ans.push(arr[i].ff-1); ans.push(arr[i].ff-1); cnt[i] -= 2; cnt[i-1] -= 2; } else if (cnt[i+1]) { ans.push(arr[i].ss+1); ans.push(arr[i].ss+1); cnt[i] -= 2; cnt[i+1] -= 2; } else return 0; } } } for (int i = 0; i < arr.size(); i++) { while (cnt[i]) { ans.push((arr[i].ff + arr[i].ss) / 2); cnt[i] -= 2; } } return 1; } signed main() { ios_base::sync_with_stdio(0), cin.tie(0); int t; cin >> t; while (t--) { int n, k; cin >> n >> k; int a; vector <int> p(n+1); for (int i = 1; i <= k; i++) cin >> a, p[a] = 1; int l = 1, r = 0, now = 0; vector <vector<pii>> arr(1); for (int i = 1; i <= n; i++) { if (p[i]) { if (r >= l) arr[now].pb(pii(l, r)); else arr.pb(vector<pii>()); l = i+1; } else r = i; } if (r >= l) arr[now].pb(pii(l, r)); bool tf = 1; for (vector <pii> v : arr) { if (!solve(v)) { tf = 0; break; } } if (!tf) { cout << -1 << "\n"; while (ans.size()) ans.pop(); } else { cout << ans.size() << "\n"; while (ans.size()) { cout << ans.top(), ans.pop(); cout << "\n "[ans.size()>0]; } } } }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 1 ms | 384 KB | Output isn't correct |
2 | Incorrect | 2 ms | 384 KB | Output isn't correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 1 ms | 384 KB | Output isn't correct |
2 | Incorrect | 2 ms | 384 KB | Output isn't correct |
3 | Incorrect | 11 ms | 384 KB | Output isn't correct |
4 | Incorrect | 12 ms | 384 KB | Output isn't correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 7 ms | 512 KB | Output isn't correct |
2 | Incorrect | 3 ms | 896 KB | Output isn't correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 1 ms | 384 KB | Output isn't correct |
2 | Incorrect | 2 ms | 384 KB | Output isn't correct |
3 | Incorrect | 11 ms | 384 KB | Output isn't correct |
4 | Incorrect | 12 ms | 384 KB | Output isn't correct |
5 | Incorrect | 2 ms | 384 KB | Output isn't correct |
6 | Incorrect | 1 ms | 384 KB | Output isn't correct |
7 | Incorrect | 1 ms | 384 KB | Output isn't correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 1 ms | 384 KB | Output isn't correct |
2 | Incorrect | 2 ms | 384 KB | Output isn't correct |
3 | Incorrect | 11 ms | 384 KB | Output isn't correct |
4 | Incorrect | 12 ms | 384 KB | Output isn't correct |
5 | Incorrect | 2 ms | 384 KB | Output isn't correct |
6 | Incorrect | 1 ms | 384 KB | Output isn't correct |
7 | Incorrect | 1 ms | 384 KB | Output isn't correct |
8 | Incorrect | 11 ms | 872 KB | Output isn't correct |
9 | Incorrect | 14 ms | 1716 KB | Output isn't correct |
10 | Incorrect | 8 ms | 1172 KB | Output isn't correct |
11 | Incorrect | 12 ms | 2312 KB | Output isn't correct |