Submission #911361

#TimeUsernameProblemLanguageResultExecution timeMemory
911361biankMechanical Doll (IOI18_doll)C++14
10 / 100
1 ms348 KiB
#include <bits/stdc++.h> #include "doll.h" using namespace std; #define SIZE(x) (int)x.size() #define forn(i,n) for(int i=0;i<int(n);i++) #define forsn(i,s,n) for(int i=int(s);i<int(n);i++) #define pb push_back typedef vector<int> vi; int n; bool dfs(int u, vi &v, vi &s, int a) { if(u>=n) { if(v[u]==-1) return false; v[u]=a; return true; } s[u]^=1; if(s[u]) return dfs(2*u,v,s,a); return dfs(2*u+1,v,s,a); } void create_circuit(int m, vi a) { vi c(m+1); c[0]=a[0]; forsn(i,1,m+1) c[i]=-1; n=1; while(n<SIZE(a)) n*=2; int k=n-SIZE(a); a.pb(0); vi v(2*n,0), s(n,0); forn(i,n) v[i]=-i-1; forsn(i,n,n+k) v[i]=-1; forsn(i,1,n+1) { bool flag=dfs(0,v,s,a[i]); while(!flag) flag=dfs(0,v,s,a[i]); } vi state(2*n,0); vi x(n), y(n); forn(i,n) x[i]=v[2*i], y[i]=v[2*i+1]; 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...