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