Submission #1051868

#TimeUsernameProblemLanguageResultExecution timeMemory
1051868MarwenElarbiFountain Parks (IOI21_parks)C++17
5 / 100
326 ms44248 KiB
#include <bits/stdc++.h> using namespace std; #include "parks.h" #define pb push_back #define fi first #define se second const int nax=2e5+5; set<pair<int,int>> mp; map<pair<int,int>,int> cor; set<pair<int,int>> vis; bool check(pair<int,int> a){ if(!mp.count({a.fi-2,a.se})&&!mp.count({a.fi+2,a.se})&&!mp.count({a.fi,a.se-2})&&!mp.count({a.fi,a.se+2})) return false; return true; } int construct_roads(std::vector<int> x, std::vector<int> y) { if (x.size() == 1) { build({}, {}, {}, {}); return 1; } std::vector<int> u, v, a, b; int n=y.size(); for (int i = 0; i < n; ++i) { mp.insert({x[i],y[i]}); cor[{x[i],y[i]}]=i; } bool test=true; for(auto i:mp){ if(!check(i)){ test=false; break; } if(mp.count({i.fi+2,i.se})){ pair<int,int> cur={i.fi+1,i.se+1}; if(vis.count(cur)) cur.se-=2; if(vis.count(cur)) return 0; vis.insert(cur); a.pb(cur.fi); b.pb(cur.se); u.pb(cor[i]); v.pb(cor[{i.fi+2,i.se}]); } if(mp.count({i.fi,i.se+2})){ pair<int,int> cur={i.fi+1,i.se+1}; if(vis.count(cur)) cur.fi-=2; if(vis.count(cur)) return 0; vis.insert(cur); a.pb(cur.fi); b.pb(cur.se); u.pb(cor[i]); v.pb(cor[{i.fi,i.se+2}]); } } if(!test) return 0; if((int)u.size()!=n-1) return 0; build(u, v, a, b); 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...