#include <cstdio> #include <set> #include <cmath> #include <utility> #include <vector> #include <string> #include <queue> #include <stack> #include <algorithm> #define MP make_pair #define ST first #define ND second #define PII pair<int,int> #define PPIII pair<PII,int> #define PPIIPII pair<PII,PII> #define PIB pair<int,bool> #define PB push_back #define VI vector<int> #define VLI vector<long long> #define VVLI vector<VLI> #define VB vector<bool> #define VPII vector<PII> #define VPPIII vector<PPIII> #define VPPIIPII vector<PPIIPII> #define VPIB vector<PIB> #define PB push_back #define INF 1000000000 #define MOD 1000000007 using namespace std; int main() { // ios_base::sync_with_stdio(0); int n; scanf("%d", &n); VPPIIPII v; //x1 y1 x2 y2 for(int i=0;i<n;i++) { int q, w, e, r; scanf("%d%d%d%d", &q, &w, &e, &r); v.PB(MP(MP(q, e), MP(w, r))); } sort(v.begin(), v.end()); for(int i=0;i<n-1;i++) if(v[i].ST.ST!=-1) { bool f; do { f=false; for(int j=0;j<n;j++) if(v[j].ST.ST!=-1) if(j!=i) { if((max(v[i].ST.ST, v[j].ST.ST)-min(v[i].ND.ST, v[j].ND.ST)) < 0 and (max(v[i].ST.ND, v[j].ST.ND)-min(v[i].ND.ND, v[j].ND.ND)) < 0) { f=true; v[i]=MP(MP(min(v[i].ST.ST, v[j].ST.ST), min(v[i].ST.ND, v[j].ST.ND)), MP(max(v[i].ND.ST, v[j].ND.ST), max(v[i].ND.ND, v[j].ND.ND))); v[j]=MP(MP(-1, -1), MP(-1, -1)); } } } while(f); } for(int i=0;i<n;i++) { v[i].ST.ND^=v[i].ND.ST^=v[i].ST.ND^=v[i].ND.ST; } sort(v.begin(), v.end()); int i=0; while(v[i].ST.ST==-1) i++; printf("%d\n", n-i); for(;i<n;i++) printf("%d %d %d %d\n", v[i].ST.ST, v[i].ST.ND, v[i].ND.ST, v[i].ND.ND); return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | #include <cstdio> #include <set> #include <cmath> #include <utility> #include <vector> #include <string> #include <queue> #include <stack> #include <algorithm> #define MP make_pair #define ST first #define ND second #define PII pair<int,int> #define PPIII pair<PII,int> #define PPIIPII pair<PII,PII> #define PIB pair<int,bool> #define PB push_back #define VI vector<int> #define VLI vector<long long> #define VVLI vector<VLI> #define VB vector<bool> #define VPII vector<PII> #define VPPIII vector<PPIII> #define VPPIIPII vector<PPIIPII> #define VPIB vector<PIB> #define PB push_back #define INF 1000000000 #define MOD 1000000007 using namespace std; int main() { // ios_base::sync_with_stdio(0); int n; scanf("%d", &n); VPPIIPII v; //x1 y1 x2 y2 for(int i=0;i<n;i++) { int q, w, e, r; scanf("%d%d%d%d", &q, &w, &e, &r); v.PB(MP(MP(q, e), MP(w, r))); } sort(v.begin(), v.end()); for(int i=0;i<n-1;i++) if(v[i].ST.ST!=-1) { bool f; do { f=false; for(int j=0;j<n;j++) if(v[j].ST.ST!=-1) if(j!=i) { if((max(v[i].ST.ST, v[j].ST.ST)-min(v[i].ND.ST, v[j].ND.ST)) < 0 and (max(v[i].ST.ND, v[j].ST.ND)-min(v[i].ND.ND, v[j].ND.ND)) < 0) { f=true; v[i]=MP(MP(min(v[i].ST.ST, v[j].ST.ST), min(v[i].ST.ND, v[j].ST.ND)), MP(max(v[i].ND.ST, v[j].ND.ST), max(v[i].ND.ND, v[j].ND.ND))); v[j]=MP(MP(-1, -1), MP(-1, -1)); } } } while(f); } for(int i=0;i<n;i++) { v[i].ST.ND^=v[i].ND.ST^=v[i].ST.ND^=v[i].ND.ST; } sort(v.begin(), v.end()); int i=0; while(v[i].ST.ST==-1) i++; printf("%d\n", n-i); for(;i<n;i++) printf("%d %d %d %d\n", v[i].ST.ST, v[i].ST.ND, v[i].ND.ST, v[i].ND.ND); return 0; } |