Submission #169306

#TimeUsernameProblemLanguageResultExecution timeMemory
169306AlexLuchianovCrayfish scrivener (IOI12_scrivener)C++14
34 / 100
1076 ms82936 KiB
int const nmax = 1000000; char last; int const lgmax = 20; int far[1 + nmax][1 + lgmax], ptr = 0; int level[1 + nmax]; char chr[1 + nmax]; void Init() {} void TypeLetter(char L) { ++ptr; far[ptr][0] = ptr - 1; for(int h = 1; h < lgmax; h++) far[ptr][h] = far[far[ptr][h - 1]][h - 1]; level[ptr] = level[far[ptr][0]] + 1; chr[ptr] = L; } void UndoCommands(int U) { ++ptr; far[ptr][0] = ptr - 1 - U; for(int h = 1; h < lgmax; h++) far[ptr][h] = far[far[ptr][h - 1]][h - 1]; level[ptr] = level[far[ptr][0]]; } char GetLetter(int P) { int pos = ptr; P++; for(int h = lgmax - 1; 0 <= h; h--) if(P <= level[far[pos][h]] ) pos = far[pos][h]; return chr[pos]; }
#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...