Submission #415922

#TimeUsernameProblemLanguageResultExecution timeMemory
415922arayiCrayfish scrivener (IOI12_scrivener)C++14
34 / 100
1082 ms80460 KiB
#include <vector> #include <algorithm> #include <set> #define ad push_back using namespace std; const int N = 1e6 + 10; int a[N], i1 = 1; int p[N][20]; char c[N]; vector<int> fp; void Init() { fp.ad(0); } void TypeLetter(char L) { a[i1] = a[i1 - 1] + 1; c[i1] = L; i1++; } void UndoCommands(int U) { a[i1] = a[i1 - U - 1]; fp.ad(i1); auto i = lower_bound(fp.begin(), fp.end(), i1 - U); p[i1][0] = *(--i); //printf("%d %d\n", i1, p[i1][0]); for (int i = 1; i < 20; i++) p[i1][i] = p[p[i1][i - 1]][i - 1]; i1++; } char GetLetter(int P) { P++; auto s = fp.back(); //printf("%d\n", s); for (int i = 20 - 1; i >= 0; i--) if (a[p[s][i]] >= P)s = p[s][i]; if (a[s] >= P) s = p[s][0]; s += P - a[s]; return c[s]; }
#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...