Submission #68492

#TimeUsernameProblemLanguageResultExecution timeMemory
68492nvmdavaCrayfish scrivener (IOI12_scrivener)C++17
0 / 100
673 ms62916 KiB
#include <bits/stdc++.h> using namespace std; char s[1000001]; int now = 0, i = 1, dir[1000001][21], sz[1000001]; void Init() {} int find(int x, int y) { for(int i = 0; y > 0; y >>= 1, i++) if(y & 1) x = dir[i][x]; return x; } void TypeLetter(char L) { s[i] = L; dir[i][0] = now; sz[i] = sz[now] + 1; dir[i][0] = now; for(int j = 1; j < 21; j++){ if(sz[i] <= (1 << j)) break; dir[i][j] = dir[dir[i][j - 1]][j - 1]; } now = i; i++; } void UndoCommands(int U) { now = i - U - 1; s[i] = s[now]; for(int j = 0; j <= 20; j++)dir[i][j] = dir[now][j]; sz[i] = sz[now]; i++; } char GetLetter(int P) { return s[find(i - 1, P + 1)]; }
#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...