Submission #640206

#TimeUsernameProblemLanguageResultExecution timeMemory
640206ieeMatching (COCI20_matching)C++17
11 / 110
365 ms9748 KiB
#include <bits/stdc++.h> using namespace std; const int N = 2e5 + 5; int n, x[N], y[N], vis[N]; vector<int> gx[N], gy[N]; int main() { cin >> n; for (int i = 0; i < n; ++i) { cin >> x[i] >> y[i]; gx[x[i]].push_back(i); gy[y[i]].push_back(i); } for (int S = 0; S < (1 << n); ++S) { vector<pair<int, int>> ex, ey; fill_n(vis, n, 0); for (int i = 0; i < n; ++i) if (S >> i & 1) { if (gx[x[i]].size() == 1 || gx[x[i]][1] == i || vis[gx[x[i]][1]]) continue; ex.emplace_back(i, gx[x[i]][1]), vis[i] = vis[gx[x[i]][1]] = 1; } else { if (gy[y[i]].size() == 1 || gy[y[i]][1] == i || vis[gy[y[i]][1]]) continue; ey.emplace_back(i, gy[y[i]][1]), vis[i] = vis[gy[y[i]][1]] = 1; } if (count(vis, vis + n, 0)) continue; for (auto EX: ex) { int xx = x[EX.first], ly = min(y[EX.first], y[EX.second]), ry = max(y[EX.first], y[EX.second]); for (auto EY: ey) { int yy = y[EY.first], ux = min(x[EY.first], x[EY.second]), dx = max(x[EY.first], x[EY.second]); if (xx >= ux && xx <= dx && yy >= ly && yy <= ry) { goto fail; } } } puts("DA"); for (auto it: ex) cout << it.first + 1 << ' ' << it.second + 1 << '\n'; for (auto it: ey) cout << it.first + 1 << ' ' << it.second + 1 << '\n'; return 0; fail:; } puts("NE"); 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...