제출 #1096383

#제출 시각아이디문제언어결과실행 시간메모리
1096383guagua0407자동 인형 (IOI18_doll)C++17
47 / 100
188 ms25508 KiB
#include "doll.h" //#include "grader.cpp" #include <bits/stdc++.h> using namespace std; #define ll long long #define pii pair<int,int> #define f first #define s second #define all(x) x.begin(),x.end() #define _ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); const int inf=1e9; void create_circuit(int m, std::vector<int> a) { int n=a.size(); int lg=__lg(n-1)+1; vector<int> state(1<<lg); vector<vector<int>> to(1<<lg,vector<int>(2,inf)); for(int i=1;i<(1<<lg);i++){ if(i*2<(1<<lg)) to[i][0]=-(i*2); if(i*2+1<(1<<lg)) to[i][1]=-(i*2+1); } for(int i=0;i<n-1;i++){ int nxt=a[i+1]; int cur=1; while(to[cur][state[cur]]!=inf){ state[cur]^=1; cur=-to[cur][state[cur]^1]; } to[cur][state[cur]]=nxt; state[cur]^=1; } for(int i=n-1;i<(1<<lg);i++){ int nxt=(i==(1<<lg)-1?0:-1); int cur=1; while(to[cur][state[cur]]!=inf){ state[cur]^=1; cur=-to[cur][state[cur]^1]; } to[cur][state[cur]]=nxt; state[cur]^=1; } vector<int> c(m+1,-1); c[0]=a[0]; vector<int> x((1<<lg)-1),y((1<<lg)-1); for(int i=1;i<(1<<lg);i++){ x[i-1]=to[i][0]; y[i-1]=to[i][1]; } 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...