Submission #1137085

#TimeUsernameProblemLanguageResultExecution timeMemory
1137085RaresFelixHamburg Steak (JOI20_hamburg)C++20
6 / 100
51 ms14760 KiB
#include <bits/stdc++.h> using namespace std; //#define int ll using ll = long long; using vi = vector<int>; using ii = pair<int, int>; using vll = vector<ll>; const int INF = 1e9 + 71; struct steak { ii h, v; bool inside(ii pct) { return h.first <= pct.first && pct.first <= h.second && v.first <= pct.second && pct.second <= v.second; } }; ii seg_extremums(vector<ii> V) { int l = -INF, r = INF; for(auto [s, d] : V) { l = max(l, s); r = min(r, d); } return {l, r}; } tuple<int, int, int, int> get_steak_extremums(vector<steak> S) { vector<ii> H, V; for(auto [h, v] : S) { H.push_back(h); V.push_back(v); } auto [lh, rh] = seg_extremums(H); auto [lv, rv] = seg_extremums(V); return {lh, rh, lv, rv}; } vector<ii> sol_k2(vector<steak> S) { ///will return the solution if it satisfies everyone auto [lh, rh, lv, rv] = get_steak_extremums(S); vector<ii> re; auto check_sol = [&](ii p1, ii p2) -> bool{ bool ok = true; for(auto it : S) { ok &= it.inside(p1) || it.inside(p2); if(!ok) break; } if(ok) { re = vector<ii>{p1, p2}; } return ok; }; check_sol(ii{lh, lv}, ii{rh, rv}); check_sol(ii{lh, rv}, ii{rh, lv}); return re; } vector<ii> sol_k1(vector<steak> S) { auto [lh, rh, lv, rv] = get_steak_extremums(S); if(lh <= rh && lv <= rv) return vector<ii>{ii{lh, lv}}; return vector<ii>(); } int main() { cin.tie(0); ios_base::sync_with_stdio(0); int n, k; cin >> n >> k; vector<steak> S(n); for(int i = 0; i < n; ++i) { cin >> S[i].h.first >> S[i].v.first >> S[i].h.second >> S[i].v.second; } vector<ii> Re; if(k == 1) Re = sol_k1(S); if(k == 2) Re = sol_k2(S); for(auto it : Re) cout << it.first << " " << it.second << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...