Submission #72956

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