Submission #101795

#TimeUsernameProblemLanguageResultExecution timeMemory
101795daniel920712Mechanical Doll (IOI18_doll)C++14
6 / 100
91 ms12168 KiB
#include "doll.h" #include <vector> #include <stdio.h> using namespace std; int con[1000005]={0}; int This[1000005]={0}; int m[1000005]; int n[1000005]; vector < int > C,x,y; int X[1000005]; int Y[1000005]; void create_circuit(int M, vector < int > A) { int N=A.size(),now=1,i; C.push_back(A[0]); for(i=1;i<=M;i++) C.push_back(i); for(i=0;i<N;i++) con[A[i]]++; A.push_back(0); for(i=0;i<N;i++) { if(con[A[i]]==1) C[A[i]]=A[i+1]; else if(con[A[i]]==2) { if(This[A[i]]==0) { C[A[i]]=-(now); X[now]=A[i+1]; now++; } else Y[-C[A[i]]]=A[i+1]; This[A[i]]++; } else if(con[A[i]]==4) { //printf("%d %d %d\n",i,A[i],This[A[i]]); if(This[A[i]]==0) { C[A[i]]=-now; X[now]=-(now+1); Y[now]=-(now+2); now+=3; m[A[i]]=X[-C[A[i]]]; n[A[i]]=Y[-C[A[i]]]; //printf("a:%d %d\n",m[A[i]],n[A[i]]); X[-m[A[i]]]=A[i+1]; } else if(This[A[i]]==1) Y[-m[A[i]]]=A[i+1]; else if(This[A[i]]==2) X[-n[A[i]]]=A[i+1]; else if(This[A[i]]==3) Y[-n[A[i]]]=A[i+1]; This[A[i]]++; } else { //printf("%d %d %d\n",i,A[i],This[A[i]]); if(This[A[i]]==0) { C[A[i]]=-now; X[now]=-(now+1); Y[now]=-(now+2); now+=3; m[A[i]]=X[-C[A[i]]]; n[A[i]]=Y[-C[A[i]]]; X[-m[A[i]]]=A[i+1]; Y[-m[A[i]]]=A[i]; } //else if(This[A[i]]==1) Y[-m[A[i]]]=A[i+1]; else if(This[A[i]]==1) X[-n[A[i]]]=A[i+1]; else if(This[A[i]]==2) Y[-n[A[i]]]=A[i+1]; This[A[i]]++; } } //for(auto i:C) printf("%d\n",i); //for(i=1;i<now;i++) printf("%d %d\n",X[i],Y[i]); for(i=1;i<now;i++) x.push_back(X[i]); for(i=1;i<now;i++) y.push_back(Y[i]); answer(C,x,y); }
#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...