Submission #72963

#TimeUsernameProblemLanguageResultExecution timeMemory
72963Hoget157Crayfish scrivener (IOI12_scrivener)C++14
34 / 100
1020 ms70008 KiB
struct Node{ public: int num,par[22] = {}; char c; }; int cnt; Node *root,*p[1000010]; void Init() { cnt = 0; root = new Node; root->num = -1; p[cnt++] = root; } void TypeLetter(char L) { p[cnt] = new Node; p[cnt]->c = L; p[cnt]->par[0] = cnt - 1; p[cnt]->num = p[cnt - 1]->num + 1; for(int i = 1;i < 22;i++){ if(p[cnt]->par[i - 1]) p[cnt]->par[i] = p[p[cnt]->par[i - 1]]->par[i - 1]; else break; } cnt++; } void UndoCommands(int U) { p[cnt] = p[cnt - U - 1]; cnt++; } char GetLetter(int P) { int tmp = cnt - 1; for(int i = 0;i < 22;i++){ if(p[tmp]->num == P) break; if(((p[tmp]->num - P) >> i) & 1) tmp = p[tmp]->par[i]; } return p[tmp]->c; }
#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...