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
#include <bits/stdc++.h>
using namespace std;

int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(0);

	int n, X, Y;
	cin >> n >> X >> Y; 

	vector<pair<int, bool>> x, y;
	
	for(int i = 0; i < n; ++i){
		int a, b, c, d;
		cin >> a >> b >> c >> d;
		if(a > c)
			swap(a, c);
		if(b > d)
			swap(b, d);
		x.emplace_back(a, 0);
		x.emplace_back(c, 1);
		y.emplace_back(b, 0);
		y.emplace_back(d, 1);
	}

	sort(x.begin(), x.end());

	int wyn = INT_MAX;

	bool rozlaczne = false, wystapilo_jeden = false;
	for(auto u:x){
		if(u.second == 1)
			wystapilo_jeden = true;
		if(u.second == 0 && wystapilo_jeden)
			rozlaczne = true;
	}

	if(rozlaczne)
		wyn = 0;
	for(int i = 0; i < (int)x.size(); ++i)
		if(x[i].second == 0 && x[i+1].second == 1)
			wyn = x[i+1].first - x[i].first;
	int mnoznik_x = max(wyn, x[0].first + X - x.back().first);
	sort(y.begin(), y.end());

        wyn = INT_MAX;

        rozlaczne = false; wystapilo_jeden = false;
        for(auto u:y){
                if(u.second == 1)
                        wystapilo_jeden = true;
                if(u.second == 0 && wystapilo_jeden)
                        rozlaczne = true;
        }

        if(rozlaczne)
                wyn = 0;
        for(int i = 0; i < (int)y.size(); ++i)
                if(y[i].second == 0 && y[i+1].second == 1)
                        wyn = y[i+1].first - y[i].first;
        int mnoznik_y = max(wyn, y[0].first + Y - y.back().first);

	cout << (long long)mnoznik_x * (long long)mnoznik_y;
}