이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "doll.h"
#include<iostream>
#include<vector>
using namespace std;
int reverse(int a,int exp){
int ans=0;
while(exp--){ans*=2;
ans+=a%2;
a/=2;
}//cout<<endl;
return ans;
}
void create_circuit(int M, std::vector<int> A) {
A.push_back(0);
int N = A.size();
int pow=1;
int exp=0;
while(pow<N){
pow*=2;
exp++;
}
vector<int> C(M+1);
for(int i=0;i<=M;i++)C[i]=-1;
vector<int> X(pow-1);
vector<int> Y(pow-1);
for(int i=0;i<pow/2-1;i++){
X[i]=2*(-i-1);
Y[i]=2*(-i-1)-1;
//cout<<-i-1<<" "<<X[i]<<" "<<Y[i]<<endl;
}
for(int i=pow/2;i<pow;i++){
int orderX=2*i-pow;
int orderY=2*i+1-pow;
//cout<<orderX<<" "<<orderY<<endl;
//cout<<reverse(orderX,exp)<<endl;
//cout<<reverse(orderY,exp)<<endl;
int rX=reverse(orderX,exp);
int rY=reverse(orderY,exp);
//cout<<rX<<" "<<rY<<endl;
if(rX+N>=pow){
X[i-1]=A[rX-pow+N];
}else X[i-1]=-1;
if(rY+N>=pow){
Y[i-1]=A[rY-pow+N];
}else Y[i-1]=-1;
}
//cout<<pow<<endl;
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... |