#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; } } |
English