This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
#define endl '\n'
#define pi pair<int, int>
#define f first
#define s second
struct rect{
int x, y, X, Y;
};
const int maxn = 200000;
int n, m, k;
vector<rect> a;
vector<int> id;
int idx(int x){
return lower_bound(id.begin(), id.end(), x) - id.begin();
}
rect bnd(vector<rect> v){
rect ret = {0, 0, m, m};
for(rect i : v){
ret.x = max(ret.x, i.x);
ret.y = max(ret.y, i.y);
ret.X = min(ret.X, i.X);
ret.Y = min(ret.Y, i.Y);
}
return ret;
}
bool crs(int a, int b, int c){
return a <= b && b <= c;
}
vector<pi> solve(vector<rect> v, int x){
rect f = bnd(v);
if(x == 1){
if(f.X < f.x || f.Y < f.y) return {};
else return {{f.x, f.y}};
}
vector<pi> pt = {{f.x, f.y}, {f.x, f.Y}, {f.X, f.y}, {f.X, f.Y}};
for(pi p : pt){
vector<rect> nv;
for(rect i : v){
if(!crs(i.x, p.f, i.X) || !crs(i.y, p.s, i.Y)) nv.push_back(i);
}
vector<pi> ret = solve(nv, x - 1);
if(!ret.empty()){
ret.push_back(p);
return ret;
}
}
return {};
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cin >> n >> k;
a.resize(n);
for(int i = 0; i < n; i++){
cin >> a[i].x >> a[i].y >> a[i].X >> a[i].Y;
id.push_back(a[i].x);
id.push_back(a[i].y);
id.push_back(a[i].X);
id.push_back(a[i].Y);
}
sort(id.begin(), id.end());
id.erase(unique(id.begin(), id.end()), id.end());
m = id.size();
for(int i = 0; i < n; i++){
a[i].x = idx(a[i].x);
a[i].y = idx(a[i].y);
a[i].X = idx(a[i].X);
a[i].Y = idx(a[i].Y);
}
vector<pi> ans = solve(a, k);
if(!ans.empty()){
for(pi i : ans) cout << id[i.f] << " " << id[i.s] << endl;
return 0;
}
return 0;
}
# | 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... |