#include <bits/stdc++.h>
using namespace std;
const int MAXN = 200005;
const int inf = 1e9 + 7;
int la[MAXN], ra[MAXN], da[MAXN], ua[MAXN];
vector<pair<int, int>> ans;
bool in(int id, int x, int y){
return x >= la[id] && x <= ra[id] && y >= da[id] && y <= ua[id];
}
bool solve(vector<int> &vid, int scnt){
if (scnt == 0) return vid.empty();
int l = -1, r = inf, d = -1, u = inf;
for (int x : vid){
l = max(l, la[x]); r = min(r, ra[x]); d = max(d, da[x]); u = min(u, ua[x]);
}
if (l <= r){
if (d <= u){
ans.push_back({l, d}); return 1;
}
else{
if (scnt < 2) return 0;
vector<int> nvid;
for (int x : vid)
if (!in(x, l, d) && !in(x, l, u))
nvid.push_back(x);
if (solve(nvid, scnt - 2)){
ans.push_back({l, d}); ans.push_back({l, u});
return 1;
}
else return 0;
}
}
else{
if (d <= u){
if (scnt < 2) return 0;
vector<int> nvid;
for (int x : vid)
if (!in(x, l, u) && !in(x, r, u))
nvid.push_back(x);
if (solve(nvid, scnt - 2)){
ans.push_back({l, u}); ans.push_back({r, u});
return 1;
}
else return 0;
}
else{
if (scnt < 2) return 0;
pair<int, int> corn[4] = {{l, u}, {l, d}, {r, u}, {r, d}};
for (auto [cx, cy] : corn){
vector<int> nvid;
for (int x : vid)
if (!in(x, cx, cy))
nvid.push_back(x);
if (solve(nvid, scnt - 1)){
ans.push_back({cx, cy});
return 1;
}
}
return 0;
}
}
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int nums, snum; cin >> nums >> snum;
for (int i = 0; i < nums; i++) cin >> la[i] >> da[i] >> ra[i] >> ua[i];
vector<int> vid;
for (int i = 0; i < nums; i++) vid.push_back(i);
solve(vid, snum);
for (auto [x, y] : ans) cout << x << ' ' << y << '\n';
for (int sz = ans.size(); sz < snum; sz++) cout << 1 << ' ' << 1 << '\n';
}
# | 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... |