Submission #470575

#TimeUsernameProblemLanguageResultExecution timeMemory
470575Killer2501Crayfish scrivener (IOI12_scrivener)C++14
100 / 100
523 ms69976 KiB
#include <bits/stdc++.h> #define ll long long #define pll pair<ll, ll> #define pii pair<ll, pll> #define pb push_back #define fi first #define se second using namespace std; const int N = 2e6 + 5; const int M = 1300; const ll mod = 1e9 + 7; int n, m, t, cur, node, cnt, a[N], nchar, p[N][21], h[N]; char c[N]; void Init() { } void TypeLetter(char L) { ++nchar; h[nchar] = h[cur] + 1; p[nchar][0] = cur; ++cnt; cur = nchar; a[cnt] = nchar; c[nchar] = L; for(int i = 1; i <= 20; i ++)p[nchar][i] = p[p[nchar][i-1]][i-1]; } void UndoCommands(int U) { cur = a[cnt - U]; ++cnt; a[cnt] = cur; } char GetLetter(int P) { int dis = h[cur] - P - 1; int u = cur; for(int i = 20; i >= 0; i --) if((dis >> i) & 1)u = p[u][i]; return c[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...