#include <iostream> #include <vector> #include <algorithm> using namespace std; class Rect{ public: int x1,x2,y1,y2; }; bool s(Rect l , Rect p){ if(l.x1<p.x1) return true; if(l.x1>p.x1) return false; if(l.x2<p.x2) return true; if(l.x2>p.x2) return false; if(l.y1<p.y1) return true; if(l.y1>p.y1) return false; if(l.y2<p.y2) return true; return false; } int main(){ int n; cin >> n; vector <Rect> v(n); for(int i=0 ;i<n ; i++) cin >> v[i].x1 >> v[i].x2 >> v[i].y1 >> v[i].y2; int i=0; while(i<v.size()){ for(int j=0 ; j<v.size() ; j++){ if(j==i) continue; if((v[j].x2 > v[i].x1 && v[j].x1 < v[i].x2 && v[j].y2 > v[i].y1 && v[j].y1 <v[i].y2) || (v[j].x1 == v[i].x1 && v[j].x2 == v[i].x2 && v[j].y1 == v[i].y1 && v[j].y2 == v[i].y2)){ int mniejszy = min(i , j); v[mniejszy].x1 = min(v[i].x1 , v[j].x1); v[mniejszy].x2 = max(v[i].x2 , v[j].x2); v[mniejszy].y1 = min(v[i].y1 , v[j].y1); v[mniejszy].y2 = max(v[i].y2 , v[j].y2); v[max(i,j)] = v.back(); v.pop_back(); i = mniejszy -1; break; } } i++; } sort(v.begin() , v.end() , s); cout << v.size() << endl; for(int i=0 ; i<v.size() ; i++){ cout << v[i].x1 << " " << v[i].x2 << " " << v[i].y1 << " " << v[i].y2 << endl; } }
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 | #include <iostream> #include <vector> #include <algorithm> using namespace std; class Rect{ public: int x1,x2,y1,y2; }; bool s(Rect l , Rect p){ if(l.x1<p.x1) return true; if(l.x1>p.x1) return false; if(l.x2<p.x2) return true; if(l.x2>p.x2) return false; if(l.y1<p.y1) return true; if(l.y1>p.y1) return false; if(l.y2<p.y2) return true; return false; } int main(){ int n; cin >> n; vector <Rect> v(n); for(int i=0 ;i<n ; i++) cin >> v[i].x1 >> v[i].x2 >> v[i].y1 >> v[i].y2; int i=0; while(i<v.size()){ for(int j=0 ; j<v.size() ; j++){ if(j==i) continue; if((v[j].x2 > v[i].x1 && v[j].x1 < v[i].x2 && v[j].y2 > v[i].y1 && v[j].y1 <v[i].y2) || (v[j].x1 == v[i].x1 && v[j].x2 == v[i].x2 && v[j].y1 == v[i].y1 && v[j].y2 == v[i].y2)){ int mniejszy = min(i , j); v[mniejszy].x1 = min(v[i].x1 , v[j].x1); v[mniejszy].x2 = max(v[i].x2 , v[j].x2); v[mniejszy].y1 = min(v[i].y1 , v[j].y1); v[mniejszy].y2 = max(v[i].y2 , v[j].y2); v[max(i,j)] = v.back(); v.pop_back(); i = mniejszy -1; break; } } i++; } sort(v.begin() , v.end() , s); cout << v.size() << endl; for(int i=0 ; i<v.size() ; i++){ cout << v[i].x1 << " " << v[i].x2 << " " << v[i].y1 << " " << v[i].y2 << endl; } } |