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