Submission #494772

#TimeUsernameProblemLanguageResultExecution timeMemory
494772Khizri분수 공원 (IOI21_parks)C++17
5 / 100
120 ms42880 KiB
#include "parks.h" #include <bits/stdc++.h> using namespace std; #define pb push_back #define F first #define S second #define pii pair<int,int> const int mxn=2e5+100; int n,color[10][mxn],arr[10][mxn],say,cl[10][mxn]; int l[4]={0,0,2,-2}; int r[4]={2,-2,0,0}; bool qq=true; vector<int>a,b,c,d; void bfs(int x,int y){ queue<pii>q; q.push({x,y}); color[x][y]=1; while(q.size()){ pii p=q.front(); q.pop(); x=p.F,y=p.S; say++; for(int i=0;i<4;i++){ int u=x+l[i],v=y+r[i]; if(arr[u][v]&&!color[u][v]){ a.pb(arr[x][y]-1); b.pb(arr[u][v]-1); int q1=x-1,q2=v-1; if(x!=u){ q1=(x+u)/2; if(cl[q1][q2]){ q2+=2; } } else{ q2=(y+v)/2; if(cl[q1][q2]){ q1+=2; } } if(cl[q1][q2]){ qq=false; } cl[q1][q2]=1; c.pb(q1); d.pb(q2); q.push({u,v}); color[u][v]=1; } } } } void dfs(int x,int y){ color[x][y]=1; say++; for(int i=0;i<4;i++){ int u=x+l[i],v=y+r[i]; if(arr[x][y]&&arr[u][v]&&!color[u][v]){ a.pb(arr[x][y]-1); b.pb(arr[u][v]-1); int q1=x+1,q2=v+1; if(x!=u){ q1=(x+u)/2; if(cl[q1][q2]){ q2-=2; } } else{ q2=(y+v)/2; if(cl[q1][q2]){ q1-=2; } } if(cl[q1][q2]){ qq=false; } cl[q1][q2]=1; c.pb(q1); d.pb(q2); dfs(u,v); } } } int construct_roads(vector<int> x, vector<int> y) { n=x.size(); int a1=-1e7,b1=-1e7,a2=1e7,b2=1e7; for(int i=0;i<n;i++){ a1=max(a1,x[i]); b1=max(b1,y[i]); a2=min(a2,x[i]); b2=min(b2,y[i]); arr[x[i]][y[i]]=i+1; } dfs(a2,b2); if(say==n){ build(a,b,c,d); return 1; } qq=true; say=0; memset(color,0,sizeof(color)); memset(cl,0,sizeof(cl)); a.clear(),b.clear(),c.clear(),d.clear(); dfs(a1,b1); if(say==n){ build(a,b,c,d); return 1; } 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...
#Verdict Execution timeMemoryGrader output
Fetching results...