제출 #1216338

#제출 시각아이디문제언어결과실행 시간메모리
1216338moondarkside크레이피쉬 글쓰는 기계 (IOI12_scrivener)C++20
100 / 100
581 ms83820 KiB
#include<bits/stdc++.h> using namespace std; struct character{ int depht; char letter; vector<int> Pointers; }; std::vector<int> Top; vector<struct character> Tree; void Init(){ return; } int getPointerAtDepht(int start,int depht){ if(Tree[start].depht==depht){ return start; } int fix=Tree[start].depht-depht; int i=-1; for(;fix>0;i++){ fix/=2; } return getPointerAtDepht(Tree[start].Pointers[i],depht); } void TypeLetter(char L){ if(Top.size()==0 || Top[Top.size()-1]==-1){ Tree.push_back({0,L,vector<int>()}); } else{ int prevP=Top[Top.size()-1]; int depht=Tree[prevP].depht+1; vector<int> Np; int pos=0; Np.push_back(prevP); while(Tree[prevP].Pointers.size()>pos){ prevP=Tree[prevP].Pointers[pos]; Np.push_back(prevP); pos+=1; } Tree.push_back({depht,L,Np}); } Top.push_back(Tree.size()-1); } void UndoCommands(int U){ if(U==Top.size()){ Top.push_back(-1); } else{ Top.push_back(Top[Top.size()-1-U]); } } char GetLetter(int P){ int pt=getPointerAtDepht(Top[Top.size()-1],P); char tmp=Tree[pt].letter; return Tree[pt].letter; }
#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...