이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#define a first
#define b second
#define pb push_back
#define mp make_pair
typedef long long llo;
#include "doll.h"
//vector<int> pre[100001];
//vector<int> adj[100001];
vector<int> ac;
vector<int> x;
vector<int> y;
int cur=0;
pair<int,int> adj[1000001];
int stt[1000001];
void con(int ind,int tot,int dd){
if(ind==tot-1){
}
else{
adj[-dd]={-cur+1,-cur+2};
x[-dd-1]=cur-1;
y[-dd-1]=cur-2;
x.pb(0);
x.pb(0);
y.pb(0);
y.pb(0);
cur--;
cur--;
int ba=cur;
con(ind+1,tot,cur+1);
con(ind+1,tot,ba);
}
}
void create_circuit(int m, vector<int> aa) {
int n=aa.size();
for(int i=0;i<=m;i++){
ac.pb(-1);
}
ac[0]=aa[0];
int xx=n;
aa.pb(0);
int dep=0;
for(int j=0;j<=19;j++){
if((1<<j)>=xx){
dep=j;
break;
}
}
cur--;
x.pb(0);
y.pb(0);
con(0,dep,cur);
int op=(1<<dep);
int ind2=1;
//continue;
for(int j=0;j<(1<<dep);j++){
int st=1;
//cout<<j<<",,"<<endl;
for(int jj=0;jj<dep-1;jj++){
if(stt[st]==0){
stt[st]=1-stt[st];
st=adj[st].a;
}
else{
stt[st]=1-stt[st];
st=adj[st].b;
}
}
op--;
if(op<n){
if(stt[st]==0){
x[st-1]=aa[ind2];
}
else{
y[st-1]=aa[ind2];
}
stt[st]=1-stt[st];
ind2++;
}
else{
if(stt[st]==0){
x[st-1]=-1;
}
else{
y[st-1]=-1;
}
stt[st]=1-stt[st];
}
}
/*while(x.size()>-cur){
x.pop_back();
}
while(y.size()>-cur){
y.pop_back();
}*/
/*for(auto j:ac){
cout<<j<<",";
}
cout<<endl;
for(auto j:x){
cout<<j<<",";
}
cout<<endl;
for(auto j:y){
cout<<j<<",";
}
cout<<endl;*/
answer(ac,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... |