#include <cstdio> #include <algorithm> using namespace std; struct pros { int x1,y1,x2,y2; friend bool operator < (pros a, pros b) { if (a.x1==a.x1) { if (a.x2==b.x2) { if (a.y1==b.y1) return a.y2<b.y2; return a.y1<b.y1; } return a.x2<b.x2; } return a.x1<b.x1; } }; pros t[100005]; int main () { int n, mam, a, b, c; bool yup; scanf ("%d", &n); mam=n; for (a=0; a<n; a++) scanf ("%d%d%d%d", &t[a].x1, &t[a].x2, &t[a].y1, &t[a].y2); yup=1; while (yup) { yup=0; for (a=0; !yup && a<mam; a++) { for (b=a+1; b<mam; b++) { if (t[a].x1<t[b].x2 && t[a].x2>t[b].x1 && t[a].y1<t[b].y2 && t[a].y2>t[b].y1) { t[a].x1=min(t[a].x1,t[b].x1); t[a].x2=max(t[a].x2,t[b].x2); t[a].y1=min(t[a].y1,t[b].y1); t[a].y2=max(t[a].y2,t[b].y2); t[b]=t[--mam]; yup=1; break; } } } } sort(t,t+mam); printf ("%d\n", mam); for (a=0; a<mam; a++) printf ("%d %d %d %d\n", t[a].x1, t[a].x2, t[a].y1, t[a].y2); 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 | #include <cstdio> #include <algorithm> using namespace std; struct pros { int x1,y1,x2,y2; friend bool operator < (pros a, pros b) { if (a.x1==a.x1) { if (a.x2==b.x2) { if (a.y1==b.y1) return a.y2<b.y2; return a.y1<b.y1; } return a.x2<b.x2; } return a.x1<b.x1; } }; pros t[100005]; int main () { int n, mam, a, b, c; bool yup; scanf ("%d", &n); mam=n; for (a=0; a<n; a++) scanf ("%d%d%d%d", &t[a].x1, &t[a].x2, &t[a].y1, &t[a].y2); yup=1; while (yup) { yup=0; for (a=0; !yup && a<mam; a++) { for (b=a+1; b<mam; b++) { if (t[a].x1<t[b].x2 && t[a].x2>t[b].x1 && t[a].y1<t[b].y2 && t[a].y2>t[b].y1) { t[a].x1=min(t[a].x1,t[b].x1); t[a].x2=max(t[a].x2,t[b].x2); t[a].y1=min(t[a].y1,t[b].y1); t[a].y2=max(t[a].y2,t[b].y2); t[b]=t[--mam]; yup=1; break; } } } } sort(t,t+mam); printf ("%d\n", mam); for (a=0; a<mam; a++) printf ("%d %d %d %d\n", t[a].x1, t[a].x2, t[a].y1, t[a].y2); return 0; } |