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
78
79
80
81
82
83
84
85
86
#include <cstdio>
#include <cstdlib>

#define NAJW_PLEMION 100 ## 000

struct prostokat {
	int Xpocz, Xkon, Ypocz, Ykon;
};

int rosnaco(const void * a, const void * b)
{
	prostokat A = *(prostokat *) a;
	prostokat B = *(prostokat *) b;

	if (A.Xpocz != B.Xpocz)
		return A.Xpocz - B.Xpocz;
	else if (A.Xkon != B.Xkon)
		return A.Xkon - B.Xkon;
	else if (A.Ypocz != B.Ypocz)
		return A.Ypocz - B.Ypocz;
	else
		return A.Ykon - B.Ykon;
}

int main()
{
	int plemion, i, j;
	prostokat tbl[NAJW_PLEMION];
	bool zmiana = true;

	scanf("%d", &plemion);

	for(i=0;i<plemion;++i)
	{
		scanf("%d %d %d %d", &tbl[i].Xpocz, &tbl[i].Xkon, &tbl[i].Ypocz, &tbl[i].Ykon);

		if (tbl[i].Xkon < tbl[i].Xpocz)
		{
			tbl[i].Xkon ^= tbl[i].Xpocz;
			tbl[i].Xpocz ^= tbl[i].Xkon;
			tbl[i].Xkon ^= tbl[i].Xpocz;
		}

		if (tbl[i].Ykon < tbl[i].Ypocz)
		{
			tbl[i].Ykon ^= tbl[i].Ypocz;
			tbl[i].Ypocz ^= tbl[i].Ykon;
			tbl[i].Ykon ^= tbl[i].Ypocz;
		}
	}

	while (zmiana)
	{
		zmiana = false;
		for (i=0;i<plemion;++i)
		{
			j = i+1;
			while (j<plemion)
			{
				if (tbl[i].Xpocz < tbl[j].Xkon && tbl[j].Xpocz < tbl[i].Xkon && tbl[i].Ypocz < tbl[j].Ykon && tbl[j].Ypocz < tbl[i].Ykon)
				{
					tbl[i].Xpocz = tbl[i].Xpocz < tbl[j].Xpocz? tbl[i].Xpocz: tbl[j].Xpocz;
					tbl[i].Xkon = tbl[i].Xkon > tbl[j].Xkon? tbl[i].Xkon: tbl[j].Xkon;
					tbl[i].Ypocz = tbl[i].Ypocz < tbl[j].Ypocz? tbl[i].Ypocz: tbl[j].Ypocz;
					tbl[i].Ykon = tbl[i].Ykon > tbl[j].Ykon? tbl[i].Ykon: tbl[j].Ykon;
					--plemion;
					tbl[j].Xpocz = tbl[plemion].Xpocz;
					tbl[j].Xkon = tbl[plemion].Xkon;
					tbl[j].Ypocz = tbl[plemion].Ypocz;
					tbl[j].Ykon = tbl[plemion].Ykon;
					zmiana = true;
				}
				else
					++j;
			}
		}
	}

	qsort(tbl, plemion, sizeof *tbl, rosnaco);

	printf("%d\n", plemion);
	for (i=0;i<plemion;++i)
		printf("%d %d %d %d\n", tbl[i].Xpocz, tbl[i].Xkon, tbl[i].Ypocz, tbl[i].Ykon);

	return 0;
}