#include <bits/stdc++.h> using namespace std; #define debug(x) cerr << #x << " " << x << endl; // #define int long long // uważaj const int N = 1e6 + 7; long long solve(vector<pair<int, int> > vek) { vector<unsigned long long> hasze; for(int i = 0; i < vek.size() + 10; i++) { unsigned long long zm = rand(); zm <<= 32; zm += rand(); hasze.push_back(zm); } map<unsigned long long, int> mapa; sort(vek.begin(), vek.end()); unsigned long long akt = 0; for(int i = 0; i + 1 < vek.size(); i++) { akt ^= hasze[vek[i].second]; mapa[akt] += vek[i + 1].first - vek[i].first; } int ret = 0; for(auto x : mapa) ret = max(ret, x.second); return ret; } int32_t main(){ srand(time(0)); ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, X, Y; vector<pair<int, int>> vek1, vek2; cin >> n >> X >> Y; for(int i = 1; i <= n; i++) { int xa, xb, ya, yb; cin >> xa >> ya >> xb >> yb; vek1.push_back({xa, i}); vek1.push_back({xb, i}); vek2.push_back({ya, i}); vek2.push_back({yb, i}); } vek1.push_back({0, 0}); vek2.push_back({0, 0}); vek1.push_back({X, 0}); vek2.push_back({Y, 0}); cout << solve(vek1) * solve(vek2) << endl; }
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 | #include <bits/stdc++.h> using namespace std; #define debug(x) cerr << #x << " " << x << endl; // #define int long long // uważaj const int N = 1e6 + 7; long long solve(vector<pair<int, int> > vek) { vector<unsigned long long> hasze; for(int i = 0; i < vek.size() + 10; i++) { unsigned long long zm = rand(); zm <<= 32; zm += rand(); hasze.push_back(zm); } map<unsigned long long, int> mapa; sort(vek.begin(), vek.end()); unsigned long long akt = 0; for(int i = 0; i + 1 < vek.size(); i++) { akt ^= hasze[vek[i].second]; mapa[akt] += vek[i + 1].first - vek[i].first; } int ret = 0; for(auto x : mapa) ret = max(ret, x.second); return ret; } int32_t main(){ srand(time(0)); ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, X, Y; vector<pair<int, int>> vek1, vek2; cin >> n >> X >> Y; for(int i = 1; i <= n; i++) { int xa, xb, ya, yb; cin >> xa >> ya >> xb >> yb; vek1.push_back({xa, i}); vek1.push_back({xb, i}); vek2.push_back({ya, i}); vek2.push_back({yb, i}); } vek1.push_back({0, 0}); vek2.push_back({0, 0}); vek1.push_back({X, 0}); vek2.push_back({Y, 0}); cout << solve(vek1) * solve(vek2) << endl; } |