Submission #441572

#TimeUsernameProblemLanguageResultExecution timeMemory
441572azberjibiouFountain Parks (IOI21_parks)C++17
30 / 100
154 ms19732 KiB
#include "parks.h" #include <bits/stdc++.h> using namespace std; #define fir first #define sec second const int mxN=200020; int N; int A[3][mxN]; bool Chk[3][mxN]; int par[mxN]; vector <int> u, v, a, b; int findpar(int a) { return (par[a]==a ? a : par[a]=findpar(par[a])); } void onion(int a, int b) { int p=findpar(a), q=findpar(b); if(p!=q) par[p]=q; } int construct_roads(std::vector<int> x, std::vector<int> y) { N=x.size(); for(int i=1;i<=100000;i++) for(int j=0;j<3;j++) A[j][i]=-1; for(int i=0;i<N;i++) { if(x[i]==2) A[0][y[i]/2]=i; else if(x[i]==4) A[1][y[i]/2]=i; else A[2][y[i]/2]=i; } for(int i=0;i<N;i++) par[i]=i; for(int i=1;i<100000;i++) { for(int j=0;j<=2;j++) { if(A[j][i]!=-1 && A[j][i+1]!=-1) onion(A[j][i], A[j][i+1]); } } for(int i=1;i<=100000;i++) { for(int j=0;j<2;j++) { if(A[0][i]!=-1 && A[1][i]!=-1) onion(A[0][i], A[1][i]); if(A[1][i]!=-1 && A[2][i]!=-1) onion(A[1][i], A[2][i]); } } for(int i=0;i<N-1;i++) { if(findpar(i)!=findpar(i+1)) { return 0; } } for(int i=1;i<100000;i++) { for(int j=0;j<3;j++) { if(A[j][i]!=-1 && A[j][i+1]!=-1) { u.push_back(A[j][i]); v.push_back(A[j][i+1]); b.push_back(2*i+1); if(j==0) a.push_back(1); else if(j==2) a.push_back(7); else if(i%2==0) a.push_back(5); else a.push_back(3); } } } for(int i=1;i<=100000;i++) { if(A[0][i]!=-1 && A[1][i]!=-1 && !Chk[0][i-1]) { Chk[0][i]=true; u.push_back(A[0][i]); v.push_back(A[1][i]); a.push_back(3); if(i%2==0) b.push_back(2*i+1); else b.push_back(2*i-1); } if(A[1][i]!=-1 && A[2][i]!=-1 && !Chk[2][i-1]) { Chk[2][i]=true; u.push_back(A[1][i]); v.push_back(A[2][i]); a.push_back(5); if(i%2==0) b.push_back(2*i-1); else b.push_back(2*i+1); } } 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...