Submission #1166945

#TimeUsernameProblemLanguageResultExecution timeMemory
1166945PagodePaivaFountain Parks (IOI21_parks)C++20
5 / 100
198 ms58176 KiB
#include "parks.h" #include<bits/stdc++.h> using namespace std; const int N = 200010; vector <pair <int, int>> pontos[N]; vector <pair <int, int>> pontos2[N]; map <pair <int, int>, pair <int, int>> fontes; vector <int> g[N]; int mark[N]; int cnt; int n; void dfs(int v){ cnt++; mark[v] = 1; for(auto x : g[v]){ if(mark[x]) continue; dfs(x); } return; } int construct_roads(std::vector<int> x, std::vector<int> y) { n = x.size(); for(int i = 0;i < n;i++){ pontos[x[i]].push_back({y[i], i}); pontos2[y[i]].push_back({x[i], i}); } for(int i = 2;i < N;i++){ if(pontos[i].empty()) continue; sort(pontos[i].begin(), pontos[i].end()); for(int j = 1;j < pontos[i].size();j++){ if(pontos[i][j].first-pontos[i][j-1].first == 2){ if((pontos[i][j-1].first/2)%2 == 1){ fontes[{i-1, pontos[i][j-1].first+1}] = make_pair(pontos[i][j].second, pontos[i][j-1].second); } else{ fontes[{i+1, pontos[i][j-1].first+1}] = make_pair(pontos[i][j].second, pontos[i][j-1].second); } } } } for(int i = 2;i < N;i++){ if(pontos2[i].empty()) continue; sort(pontos2[i].begin(), pontos2[i].end()); for(int j = 1;j < pontos2[i].size();j++){ if(pontos2[i][j].first - pontos2[i][j-1].first == 2){ if(fontes.find({pontos2[i][j].first-1, i-1}) != fontes.end()){ fontes[{pontos2[i][j].first-1, i+1}] = make_pair(pontos2[i][j].second, pontos2[i][j-1].second); } else{ fontes[{pontos2[i][j].first-1, i-1}] = make_pair(pontos2[i][j].second, pontos2[i][j-1].second); } } } } vector <int> u, v, a, b; int st = 0; for(auto [p, q] : fontes){ auto [x, y] = p; auto [z, w] = q; a.push_back(x); b.push_back(y); u.push_back(z); v.push_back(w); // cout << x << ' ' << y << ' ' << z << ' ' << w << '\n'; g[w].push_back(z); g[z].push_back(w); st = z; } dfs(st); if(cnt != n) return 0; build(u, v, a, b); return 1; return 1; }
#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...