This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |