이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "doll.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ii pair<ll,ll>
#define iii pair<ii,ll>
#define fi first
#define se second
#define rep(x,start,end) for(auto x=(start)-((start)>(end));x!=(end)-((start)>(end));((start)<(end)?x++:x--))
#define all(x) (x).begin(),(x).end()
#define sz(x) (int)(x).size()
struct sw{
int l,r;
bool flip=false;
sw(){}
sw(int _l,int _r){
l=_l,r=_r;
}
};
int IDX=2;
sw switches[400005];
void create_circuit(int m, vector<int> arr) {
vector<int> dev;
rep(x,0,m+1) dev.push_back(-1);
if (sz(arr)==1){
answer(dev,{arr[0]},{0});
return;
}
switches[1]=sw(arr[0],arr[1]);
int ss=1;
while (ss<sz(arr)+1) ss<<=1;
while (sz(arr)<ss-1) arr.push_back(-1);
arr.push_back(0);
rep(x,2,sz(arr)){
int curr=1;
while (true){
switches[curr].flip^=true;
if (switches[curr].flip){
if (switches[curr].l<0) curr=-switches[curr].l;
else{
switches[IDX]=sw(switches[curr].l,arr[x]);
switches[curr].l=-IDX;
IDX++;
break;
}
}
else{
if (switches[curr].r<0) curr=-switches[curr].r;
else{
switches[IDX]=sw(switches[curr].r,arr[x]);
switches[curr].r=-IDX;
IDX++;
break;
}
}
}
}
vector<int> l;
vector<int> r;
rep(x,1,IDX) l.push_back(switches[x].l);
rep(x,1,IDX) r.push_back(switches[x].r);
//rep(x,1,IDX) cout<<switches[x].l<<" "<<switches[x].r<<endl;
answer(dev,l,r);
}
# | 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... |