Submission #415918

#TimeUsernameProblemLanguageResultExecution timeMemory
415918arayiCrayfish scrivener (IOI12_scrivener)C++17
34 / 100
1098 ms97324 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]; set<int> fp; void Init() { fp.insert(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.insert(i1); auto i = fp.lower_bound(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.end()); //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...