# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
623728 | 2022-08-06T12:32:07 Z | Vladth11 | Roads (CEOI20_roads) | C++14 | 0 ms | 0 KB |
#include <bits/stdc++.h> #define C 1 #define P 0 #define debug(x) cerr << #x << " " << x << "\n" #define debugs(x) cerr << #x << " " << x << " " using namespace std; typedef long long ll; typedef pair <int, int> pii; typedef pair <long double, pii> muchie; const ll NMAX = 100001; const ll VMAX = 101; const ll INF = (1LL << 60); const ll MOD = 1000000007; const ll BLOCK = 447; const ll base = 117; const ll nr_of_bits = 18; const ll inv2 = 500000004; map <pii, pii> mp; pii v[NMAX * 2]; struct ura{ pii a, b; }; vector <ura> sol; map <pii, bool> scutit; bool cmp(pii a, pii b){ return {a.second, a.first} < {b.second, b.first}; } int main() { //ifstream cin(".in"); //ofstream cout(".out"); ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n, i; cin >> n; for(i = 1; i <= n; i++){ pii a, b; cin >> a.first >> a.second >> b.first >> b.second; mp[a] = b; mp[b] = a; v[i * 2 - 1] = a; v[i * 2] = b; } sort(v + 1, v + n * 2 + 1, cmp); for(i = 1; i <= n * 2; i++){ int j; if(scutit[v[i]]) continue; int bun = 0; for(j = i - 1; j >= 1; j--){ if(mp[v[i]] == v[j]) continue; bun = j; } j = bun; if(j == 0) continue; scutit[mp[v[i]]] = 1; scutit[mp[v[j]]] = 1; scutit[v[j]] = 1; sol.push_back({v[i], v[j]}); } for(auto x : sol){ cout << x.a.first << " " << x.a.second << " " << x.b.first << " " << x.b.second << "\n"; } return 0; }