제출 #1306419

#제출 시각아이디문제언어결과실행 시간메모리
1306419Double_Slash함박 스테이크 (JOI20_hamburg)C++20
3 / 100
1999 ms5576 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; #define all(x) x.begin(), x.end() using Rect = array<int, 4>; const int INF = 1e9; int main() { int n, k; cin >> n >> k; vector<Rect> rects(n); for (auto &[l, d, r, u]: rects) cin >> l >> d >> r >> u; mt19937 gen(chrono::high_resolution_clock::now().time_since_epoch().count()); shuffle(all(rects), gen); vector<vector<Rect>> v{{rects.back()}}; rects.pop_back(); for (auto &[L, D, R, U]: rects) { vector<vector<Rect>> v2; for (const auto &s: v) { for (int i = s.size(); i--;) { auto s2 = s; auto &r = s2[i]; r[0] = max(r[0], L); r[2] = min(r[2], R); if (r[0] > r[2]) continue; r[1] = max(r[1], D); r[3] = min(r[3], U); if (r[1] > r[3]) continue; sort(all(s2)); v2.push_back(s2); } if (s.size() == k) continue; auto s2 = s; s2.push_back({L, D, R, U}); sort(all(s2)); v2.push_back(s2); } v = move(v2); sort(all(v)); v.erase(unique(all(v)), v.end()); shuffle(all(v), gen); if (v.size() > 100) v.erase(100 + all(v)); } while (v[0].size() < k) v[0].push_back({1, 1, 0, 0}); for (auto &[l, d, r, u]: v[0]) cout << l << ' ' << d << endl; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...