Submission #255627

#TimeUsernameProblemLanguageResultExecution timeMemory
255627tincamateiCrayfish scrivener (IOI12_scrivener)C++14
100 / 100
896 ms89592 KiB
#include <bits/stdc++.h> const int MAX_N = 1000000; const int MAX_L = 20; struct Node { char letter; int depth; int goup[MAX_L]; } tree[1+MAX_N]; int top = 1; void Init() { tree[0] = {'\0', -1}; for(int i = 0; i < MAX_L; ++i) tree[0].goup[i] = 0; } void TypeLetter(char L) { tree[top].goup[0] = top - 1; for(int i = 1; i < MAX_L; ++i) tree[top].goup[i] = tree[tree[top].goup[i - 1]].goup[i - 1]; // this line is way too long JfC tree[top].depth = tree[top - 1].depth + 1; tree[top].letter = L; ++top; } void UndoCommands(int U) { tree[top] = tree[top - 1 - U]; top++; } char GetLetter(int P) { int nod = top - 1; for(int i = MAX_L - 1; i >= 0; --i) { int nod2 = tree[nod].goup[i]; if(tree[nod2].depth >= P) nod = nod2; } return tree[nod].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...