Submission #1204126

#TimeUsernameProblemLanguageResultExecution timeMemory
1204126simona1230Fountain Parks (IOI21_parks)C++20
0 / 100
0 ms324 KiB
#include "parks.h" #include <bits/stdc++.h> using namespace std; const int maxn=5*1e5+5; struct fount { int x,y,i; fount(){} fount(int _x,int _y,int _i) { x=_x; y=_y; i=_i; } }; bool cmp(fount f1,fount f2) { return f1.y<f2.y; } int c; fount p[maxn]; map<pair<int,int>,int> mp; vector<int> u,v,a,b; int used[maxn]; void dfs(int i,int pr) { if(pr!=-1) { v.push_back(i-1); u.push_back(pr-1); } int cnt=0; used[i]=1; pair<int,int> h={p[i].x,p[i].y}; h.first+=2; if(mp[h]&&!used[mp[h]]) { cnt++; dfs(mp[h],i); } h.first-=4; if(mp[h]&&!used[mp[h]]) { cnt++; dfs(mp[h],i); } h.first+=2; h.second+=2; if(mp[h]&&!used[mp[h]]) { cnt++; dfs(mp[h],i); } h.second-=4; if(mp[h]&&!used[mp[h]]) { cnt++; dfs(mp[h],i); } } int construct_roads(std::vector<int> x, std::vector<int> y) { c=x.size(); u.resize(c-1); v.resize(c-1); a.resize(c-1); b.resize(c-1); for(int i=0;i<x.size();i++) { p[i+1]={x[i],y[i],i}; mp[{x[i],y[i]}]=i+1; } dfs(1,-1); sort(p,p+c,cmp); for(int i=1;i<c;i++) { if(p[i-1].y+2!=p[i].y)return 0; a[i-1]=3; b[i-1]=p[i-1].y+1; } build(v,u,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...