#include <bits/stdc++.h>
// author: aykhn
using namespace std;
#define mpr make_pair
#define pb push_back
#define fi first
#define se second
const int MXN = 1e6 + 5;
const int LOG = 21;
int n;
int adj[MXN][26];
int p[LOG][MXN];
char val[MXN];
int dep[MXN];
vector<int> s;
void Init()
{
s.clear();
for (int i = 0; i <= n; i++)
{
for (int j = 0; j < LOG; j++) p[j][i] = 0;
for (int j = 0; j < 26; j++) adj[i][j] = 0;
val[i] = '$';
}
s.pb(0);
n = 0;
}
void TypeLetter(char L)
{
int cur = s.back();
if (adj[cur][L - 'a']) s.pb(adj[cur][L - 'a']);
else
{
adj[cur][L - 'a'] = ++n;
p[0][n] = cur;
for (int i = 1; i < LOG; i++) p[i][n] = p[i - 1][p[i - 1][n]];
dep[n] = dep[cur] + 1;
val[n] = L;
s.pb(n);
}
}
void UndoCommands(int U)
{
s.pb(s[(int)s.size() - U - 1]);
}
char GetLetter(int P)
{
int cur = s.back();
int d = dep[cur] - P - 1;
for (int i = LOG - 1; i >= 0; i--)
{
if (d >> i & 1) cur = p[i][cur];
}
return val[cur];
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
6 ms |
47452 KB |
Output is correct |
2 |
Correct |
5 ms |
47452 KB |
Output is correct |
3 |
Correct |
5 ms |
47452 KB |
Output is correct |
4 |
Correct |
5 ms |
47448 KB |
Output is correct |
5 |
Correct |
5 ms |
47452 KB |
Output is correct |
6 |
Correct |
5 ms |
47452 KB |
Output is correct |
7 |
Correct |
5 ms |
47652 KB |
Output is correct |
8 |
Correct |
6 ms |
47452 KB |
Output is correct |
9 |
Correct |
5 ms |
47452 KB |
Output is correct |
10 |
Correct |
5 ms |
47452 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
6 ms |
47452 KB |
Output is correct |
2 |
Correct |
5 ms |
47452 KB |
Output is correct |
3 |
Correct |
5 ms |
47452 KB |
Output is correct |
4 |
Correct |
5 ms |
47452 KB |
Output is correct |
5 |
Correct |
5 ms |
47452 KB |
Output is correct |
6 |
Correct |
5 ms |
47452 KB |
Output is correct |
7 |
Correct |
6 ms |
47608 KB |
Output is correct |
8 |
Correct |
6 ms |
47452 KB |
Output is correct |
9 |
Correct |
5 ms |
47452 KB |
Output is correct |
10 |
Correct |
5 ms |
47452 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
47452 KB |
Output is correct |
2 |
Correct |
6 ms |
47960 KB |
Output is correct |
3 |
Correct |
6 ms |
47708 KB |
Output is correct |
4 |
Correct |
6 ms |
47668 KB |
Output is correct |
5 |
Correct |
6 ms |
47708 KB |
Output is correct |
6 |
Correct |
6 ms |
47876 KB |
Output is correct |
7 |
Correct |
6 ms |
47708 KB |
Output is correct |
8 |
Correct |
6 ms |
47708 KB |
Output is correct |
9 |
Correct |
6 ms |
47704 KB |
Output is correct |
10 |
Correct |
6 ms |
47708 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
212 ms |
151304 KB |
Output is correct |
2 |
Correct |
240 ms |
159844 KB |
Output is correct |
3 |
Correct |
204 ms |
158144 KB |
Output is correct |
4 |
Correct |
196 ms |
139464 KB |
Output is correct |
5 |
Correct |
197 ms |
150032 KB |
Output is correct |
6 |
Correct |
178 ms |
164800 KB |
Output is correct |
7 |
Correct |
196 ms |
115140 KB |
Output is correct |
8 |
Correct |
197 ms |
146856 KB |
Output is correct |
9 |
Correct |
227 ms |
166848 KB |
Output is correct |
10 |
Correct |
144 ms |
146620 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
263 ms |
143384 KB |
Output is correct |
2 |
Correct |
339 ms |
132728 KB |
Output is correct |
3 |
Correct |
223 ms |
139312 KB |
Output is correct |
4 |
Correct |
199 ms |
115588 KB |
Output is correct |
5 |
Correct |
186 ms |
148284 KB |
Output is correct |
6 |
Correct |
229 ms |
141660 KB |
Output is correct |
7 |
Correct |
208 ms |
147636 KB |
Output is correct |
8 |
Correct |
230 ms |
97728 KB |
Output is correct |
9 |
Correct |
272 ms |
136636 KB |
Output is correct |
10 |
Correct |
154 ms |
146256 KB |
Output is correct |