#include <iostream> using namespace std; bool wewnatrz(long int x, long int y, long int x1, long int x2, long int y1, long int y2) { if ((x > x1) && (x < x2) && (y > y1) && (y < y2)) { return true; } else { return false; } } int main() { long int ile_p; cin >> ile_p; static long int t[100001][4]; static bool aktywny[100001]; bool koniec; for(long int i = 1; i <= ile_p; i++) { cin >> t[i][0] >> t[i][1] >> t[i][2] >> t[i][3]; aktywny[i] = true; } do { koniec = true; for(long int i = 1; i <= ile_p; i++) { for(long int j = 1; j <= ile_p; j++) { if((aktywny[i]) && (aktywny[j]) && (i!=j)) { bool o1, o2, o3, o4; o1 = wewnatrz(t[i][0], t[i][2], t[j][0], t[j][1], t[j][2], t[j][3]); o2 = wewnatrz(t[i][1], t[i][2], t[j][0], t[j][1], t[j][2], t[j][3]); o3 = wewnatrz(t[i][0], t[i][3], t[j][0], t[j][1], t[j][2], t[j][3]); o4 = wewnatrz(t[i][1], t[i][3], t[j][0], t[j][1], t[j][2], t[j][3]); if ((o1) || (o2) || (o3) || (o4)) { aktywny[j] = false; t[i][0] = min(t[i][0], t[j][0]); t[i][1] = max(t[i][1], t[j][1]); t[i][2] = min(t[i][2], t[j][2]); t[i][3] = max(t[i][3], t[j][3]); koniec = false; } } } } } while(!koniec); long int s = 0; for(long int i = 1; i <= ile_p; i++) { if(aktywny[i]) { s++; } } cout << s << endl; for(long int i = 1; i <= ile_p; i++) { if(aktywny[i]) { cout << t[i][0] << " " << t[i][1] << " " << t[i][2] << " " << t[i][3] << endl; } } 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 | #include <iostream> using namespace std; bool wewnatrz(long int x, long int y, long int x1, long int x2, long int y1, long int y2) { if ((x > x1) && (x < x2) && (y > y1) && (y < y2)) { return true; } else { return false; } } int main() { long int ile_p; cin >> ile_p; static long int t[100001][4]; static bool aktywny[100001]; bool koniec; for(long int i = 1; i <= ile_p; i++) { cin >> t[i][0] >> t[i][1] >> t[i][2] >> t[i][3]; aktywny[i] = true; } do { koniec = true; for(long int i = 1; i <= ile_p; i++) { for(long int j = 1; j <= ile_p; j++) { if((aktywny[i]) && (aktywny[j]) && (i!=j)) { bool o1, o2, o3, o4; o1 = wewnatrz(t[i][0], t[i][2], t[j][0], t[j][1], t[j][2], t[j][3]); o2 = wewnatrz(t[i][1], t[i][2], t[j][0], t[j][1], t[j][2], t[j][3]); o3 = wewnatrz(t[i][0], t[i][3], t[j][0], t[j][1], t[j][2], t[j][3]); o4 = wewnatrz(t[i][1], t[i][3], t[j][0], t[j][1], t[j][2], t[j][3]); if ((o1) || (o2) || (o3) || (o4)) { aktywny[j] = false; t[i][0] = min(t[i][0], t[j][0]); t[i][1] = max(t[i][1], t[j][1]); t[i][2] = min(t[i][2], t[j][2]); t[i][3] = max(t[i][3], t[j][3]); koniec = false; } } } } } while(!koniec); long int s = 0; for(long int i = 1; i <= ile_p; i++) { if(aktywny[i]) { s++; } } cout << s << endl; for(long int i = 1; i <= ile_p; i++) { if(aktywny[i]) { cout << t[i][0] << " " << t[i][1] << " " << t[i][2] << " " << t[i][3] << endl; } } return 0; } |