제출 #1223484

#제출 시각아이디문제언어결과실행 시간메모리
1223484overwatch9Parking (CEOI22_parking)C++20
0 / 100
2093 ms6216 KiB
#include <bits/stdc++.h> using namespace std; int n, m; vector <int> a, b; int main() { cin >> n >> m; a = b = vector <int> (m+1); for (int i = 1; i <= m; i++) cin >> a[i] >> b[i]; int ans = 0; vector <pair <int, int>> steps; while (true) { set <pair <int, int>> to_add; for (int i = 1; i <= m; i++) { if (b[i] == 0 && a[i] != 0) to_add.insert({a[i], i}); } bool done = false; for (int i = 1; i <= m; i++) { if (b[i] == a[i] || b[i] == 0) continue; if (a[i] == b[i] && a[i] != 0) continue; auto it = to_add.lower_bound({b[i], 0}); if (it != to_add.end() && it->first == b[i]) { done = true; ans ++; steps.push_back({i, it->second}); b[it->second] = b[i]; b[i] = 0; break; } } if (done) continue; to_add.clear(); for (int i = 1; i <= m; i++) { if (b[i] != 0) continue; if (a[i] == b[i] && a[i] != 0) continue; auto it = to_add.lower_bound({a[i], 0}); if (it != to_add.end() && it->first == a[i]) { ans++; steps.push_back({i, it->second}); b[it->second] = a[i]; a[i] = 0; done = true; break; } else if (a[i] != 0) to_add.insert({a[i], i}); } if (done) continue; set <int> seen; int empty = -1; for (int i = 1; i <= m; i++) { if (a[i] == 0) empty = i; else seen.insert(a[i]); } for (int i = 1; i <= m; i++) { if (b[i] == 0) continue; if (a[i] == b[i] && a[i] != 0) continue; if (seen.find(b[i]) == seen.end()) { if (empty == -1) { cout << -1 << '\n'; return 0; } a[empty] = b[i]; b[i] = 0; done = true; ans++; steps.push_back({i, empty}); break; } } if (done) continue; if (!done) break; } cout << ans << '\n'; for (auto i : steps) cout << i.first << ' ' << i.second << '\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...
#Verdict Execution timeMemoryGrader output
Fetching results...