제출 #120477

#제출 시각아이디문제언어결과실행 시간메모리
120477KieranHorgan크레이피쉬 글쓰는 기계 (IOI12_scrivener)C++17
100 / 100
804 ms90692 KiB
#include <bits/stdc++.h> using namespace std; char charOfStep[1000005]; int depth[1000005]; int kthAncestor[1000005][21]; int curStep = 0; void Init() {} void TypeLetter(char L) { curStep++; charOfStep[curStep] = L; depth[curStep] = depth[curStep-1]+1; kthAncestor[curStep][0] = curStep-1; for(int i = 1; 1<<i <= depth[curStep]; i++) kthAncestor[curStep][i] = kthAncestor[kthAncestor[curStep][i-1]][i-1]; } void UndoCommands(int U) { curStep++; charOfStep[curStep] = charOfStep[curStep-1-U]; depth[curStep] = depth[curStep-1-U]; kthAncestor[curStep][0] = kthAncestor[curStep-1-U][0]; for(int i = 1; 1<<i <= depth[curStep]; i++) kthAncestor[curStep][i] = kthAncestor[curStep-1-U][i]; } char GetLetter(int P) { int node = curStep; for(int i = 21; i >= 0; i--) if(depth[node] - (1<<i) >= P+1) node = kthAncestor[node][i]; return charOfStep[node]; }
#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...