제출 #223528

#제출 시각아이디문제언어결과실행 시간메모리
223528Minnakhmetov함박 스테이크 (JOI20_hamburg)C++14
3 / 100
1302 ms38700 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define all(aaa) aaa.begin(), aaa.end() const int INF = 1e9 + 5, N = 2e5 + 5, M = 2005; struct R { int xl = -1, yl = -1, xr = INF, yr = INF; bool is_empty() { return xl > xr || yl > yr; } } rect[N]; int w[M][M], col[N]; int n, k; R get_intersection(R a, R b) { return {max(a.xl, b.xl), max(a.yl, b.yl), min(a.xr, b.xr), min(a.yr, b.yr)}; } void dfs(int node, int c) { col[node] = c; for (int i = 0; i < n; i++) { if (w[node][i] && !col[i]) { dfs(i, 3 - c); } } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> n >> k; for (int i = 0; i < n; i++) { cin >> rect[i].xl >> rect[i].yl >> rect[i].xr >> rect[i].yr; } if (k == 1) { R inter; for (int i = 0; i < n; i++) { inter = get_intersection(inter, rect[i]); } cout << inter.xl << " " << inter.yl << "\n"; } else if (k == 2) { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { w[i][j] = get_intersection(rect[i], rect[j]).is_empty(); } } for (int i = 0; i < n; i++) { if (!col[i]) { dfs(i, 1); } } R inter[2]; for (int i = 0; i < n; i++) { inter[col[i] - 1] = get_intersection(inter[col[i] - 1], rect[i]); } for (int i = 0; i < 2; i++) { cout << inter[i].xl << " " << inter[i].yl << "\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...