# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
38044 | 2017-12-31T02:41:25 Z | funcsr | Crayfish scrivener (IOI12_scrivener) | C++14 | 606 ms | 190628 KB |
#include <iostream> #include <vector> #include <string> #define rep(i, n) for (int i=0; i<(n); i++) using namespace std; int N; int U[20][1000000]; char W[1000000]; int R[1000000]; int ch[1000000][26]; int alloc(int par, char c) { if (par != -1) R[N] = R[par]+1; U[0][N] = par; for (int i=1; i<20; i++) U[i][N] = U[i-1][U[i-1][N]]; return N++; } int next(int v, char c) { if (ch[v][c] == -1) ch[v][c] = alloc(v, c); return ch[v][c]; } int cur = 0; int V[1000000]; void Init() { rep(i, 1000000) rep(j, 26) ch[i][j] = -1; V[cur] = alloc(-1, '$'); } void TypeLetter(char L) { V[cur+1] = next(V[cur], L); cur++; } void UndoCommands(int U) { V[cur+1] = V[cur-U]; cur++; } inline int up(int v, int k) { for (int i=19; i>=0; i--) if (k>>i) v = U[i][v]; return v; } char GetLetter(int P) { int v = V[cur]; return W[up(v, R[v]-(P+1))]; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 43 ms | 190628 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 49 ms | 190628 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 33 ms | 190628 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 383 ms | 190628 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 606 ms | 190628 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |