제출 #82167

#제출 시각아이디문제언어결과실행 시간메모리
82167KLPP자동 인형 (IOI18_doll)C++14
37 / 100
106 ms8484 KiB
#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 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...