제출 #1174497

#제출 시각아이디문제언어결과실행 시간메모리
1174497PacybwoahDEL13 (info1cup18_del13)C++20
0 / 100
1 ms320 KiB
#include<iostream> #include<vector> #include<algorithm> #include<utility> #include<cmath> using namespace std; typedef long long ll; const ll inf = 1e18; int main(){ ios::sync_with_stdio(false); cin.tie(0); int t; cin >> t; while(t--){ int n, k; cin >> n >> k; vector<pair<int, pair<int, int>>> rngs; vector<int> vec(n + 1); for(int i = 0; i < k; i++){ int tmp; cin >> tmp; vec[tmp] = 1; } int lst = 1; for(int i = 2; i <= n; i++){ if(vec[i - 1] != vec[i]){ rngs.emplace_back(vec[i - 1], make_pair(lst, i - 1)); lst = i; } } rngs.emplace_back(vec[n], make_pair(lst, n)); if(rngs.back().first == 1) rngs.pop_back(); if(!rngs.empty() && rngs[0].first == 1){ rngs.erase(rngs.begin()); } int sum = 0; int cnt = 0; bool flag = 0; vector<pair<int, int>> vals; for(auto &[val, info]: rngs){ auto &[l, r] = info; if(val == 1){ if(l < r){ if(sum % 2 == 1 || cnt == 1){ flag = 1; break; } sum = 0; cnt = 0; } } else sum += r - l + 1, cnt++, vals.emplace_back(l, r); } if(sum % 2 == 1 || cnt == 1){ flag = 1; } if(flag){ cout << "-1\n"; continue; } cout << (n - k) / 2 << "\n"; vector<int> ans; int a = vals[0].second - vals[0].first + 1, b = vals[1].second - vals[1].first + 1, mid = vals[0].second + 1; if(a == b){ for(int i = 0; i < a; i++) ans.push_back(mid); } else if(a > b){ for(int i = 0; i < b; i++) ans.push_back(mid); a -= b; int mid2 = mid - a / 2 - 1; for(int i = 0; i < a / 2; i++) ans.push_back(mid2); } else{ for(int i = 0; i < a; i++) ans.push_back(mid); b -= a; int mid2 = mid + b / 2 + 1; for(int i = 0; i < b / 2; i++) ans.push_back(mid2); } reverse(ans.begin(), ans.end()); for(auto &x: ans) cout << x << " "; cout << "\n"; } } // g++ -std=c++17 -Wall -Wextra -Wshadow -fsanitize=undefined -fsanitize=address -o run pB.cpp -g
#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...