Submission #1196984

#TimeUsernameProblemLanguageResultExecution timeMemory
1196984Hamed_GhaffariCrayfish scrivener (IOI12_scrivener)C++20
100 / 100
657 ms62932 KiB
#include <bits/stdc++.h> using namespace std; const int MXN = 1e6+5, LOG = 20; int par[MXN][LOG], h[MXN], N, v; char ch[MXN]; vector<int> vers; void Init() { vers.push_back(0); } void TypeLetter(char c) { N++; par[N][0] = v; h[N] = h[v]+1; ch[N] = c; vers.push_back(v=N); for(int i=1; i<LOG; i++) par[v][i] = par[par[v][i-1]][i-1]; } void UndoCommands(int x) { v = vers[int(vers.size())-x-1]; vers.push_back(v); } char GetLetter(int p) { int u = v; p++; for(int i=LOG-1; i>=0; i--) if(h[par[u][i]]>=p) u = par[u][i]; return ch[u]; }
#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...