#include <iostream>
#include <algorithm>
#include <vector>
#include <math.h>
using namespace std;
struct pro{
int x1,y1,x2,y2;
};
bool comp(const pro &a, const pro &b){
if(a.x1!=b.x1)
return a.x1 < b.x1;
if(a.x2!=b.x2)
return a.x2 < b.x2;
if(a.y1!=b.y1)
return a.y1 < b.y1;
if(a.y2!=b.y2)
return a.y2 < b.y2;
}
pro W;
inline bool kolizja(pro A, pro B){
W.x1 = max(A.x1, B.x1);
W.y1 = max(A.y1, B.y1);
W.x2 = min(A.x2, B.x2);
W.y2 = min(A.y2, B.y2);
if(W.x2-W.x1<=0)return false;
if(W.y2-W.y1<=0)return false;
return true;
};
vector<pro>P;
int main(){
int n;
cin>>n;
int ile = 0;
while(n--){
pro p;
cin>>p.x1>>p.x2>>p.y1>>p.y2;
int ok = 1;
while(ok){
ok = 0;
for(int i =0;i<ile;i++){
if(kolizja(p,P[i])){
p.x1=min(p.x1,P[i].x1);
p.y1=min(p.y1,P[i].y1);
p.x2=max(p.x2,P[i].x2);
p.y2=max(p.y2,P[i].y2);
P[i]=P[ile-1];
P.pop_back();
ile--;
ok = 1;
break;
}
}
}
P.push_back(p);
ile++;
}
sort(P.begin(),P.end(),comp);
cout<<ile<<"\n";
for(int i =0;i<ile;i++)
cout<<P[i].x1<<" "<<P[i].x2<<" "<<P[i].y1<<" "<<P[i].y2<<"\n";
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 <iostream> #include <algorithm> #include <vector> #include <math.h> using namespace std; struct pro{ int x1,y1,x2,y2; }; bool comp(const pro &a, const pro &b){ if(a.x1!=b.x1) return a.x1 < b.x1; if(a.x2!=b.x2) return a.x2 < b.x2; if(a.y1!=b.y1) return a.y1 < b.y1; if(a.y2!=b.y2) return a.y2 < b.y2; } pro W; inline bool kolizja(pro A, pro B){ W.x1 = max(A.x1, B.x1); W.y1 = max(A.y1, B.y1); W.x2 = min(A.x2, B.x2); W.y2 = min(A.y2, B.y2); if(W.x2-W.x1<=0)return false; if(W.y2-W.y1<=0)return false; return true; }; vector<pro>P; int main(){ int n; cin>>n; int ile = 0; while(n--){ pro p; cin>>p.x1>>p.x2>>p.y1>>p.y2; int ok = 1; while(ok){ ok = 0; for(int i =0;i<ile;i++){ if(kolizja(p,P[i])){ p.x1=min(p.x1,P[i].x1); p.y1=min(p.y1,P[i].y1); p.x2=max(p.x2,P[i].x2); p.y2=max(p.y2,P[i].y2); P[i]=P[ile-1]; P.pop_back(); ile--; ok = 1; break; } } } P.push_back(p); ile++; } sort(P.begin(),P.end(),comp); cout<<ile<<"\n"; for(int i =0;i<ile;i++) cout<<P[i].x1<<" "<<P[i].x2<<" "<<P[i].y1<<" "<<P[i].y2<<"\n"; return 0; } |
English