#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 time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |