#include <bits/stdc++.h>
#define Loop(x,l,r) for (ll x = (l); x < (r); ++x)
#define LoopR(x,l,r) for (ll x = (r)-1; x >= (l); --x)
typedef long long ll;
using namespace std;
const int lg = 20;
const int N = 1<<lg;
struct {
int anc[lg];
int len;
char l;
} node[N];
int pos = 0;
void Init() {}
void TypeLetter(char L) {
int v = pos+1;
node[v].anc[0] = pos;
Loop (i,1,lg)
node[v].anc[i] = node[node[v].anc[i-1]].anc[i-1];
node[v].len = node[pos].len+1;
node[v].l = L;
++pos;
}
void UndoCommands(int U) {
memcpy(&node[pos+1], &node[pos-U], sizeof(*node));
++pos;
}
char GetLetter(int P) {
//string s;
//for (int v = pos; node[v].l; v = node[v].anc[0])
// s += node[v].l;
//reverse(s.begin(), s.end());
//cout << s << '\n';
P = node[pos].len - 1 - P;
int v = pos;
LoopR (i,0,lg) {
if (!(P & (1<<i)))
continue;
v = node[v].anc[i];
}
return node[v].l;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
212 KB |
Output is correct |
3 |
Correct |
1 ms |
212 KB |
Output is correct |
4 |
Correct |
1 ms |
308 KB |
Output is correct |
5 |
Correct |
1 ms |
312 KB |
Output is correct |
6 |
Correct |
1 ms |
212 KB |
Output is correct |
7 |
Correct |
0 ms |
316 KB |
Output is correct |
8 |
Correct |
0 ms |
212 KB |
Output is correct |
9 |
Correct |
0 ms |
212 KB |
Output is correct |
10 |
Correct |
0 ms |
212 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
0 ms |
212 KB |
Output is correct |
3 |
Correct |
1 ms |
212 KB |
Output is correct |
4 |
Correct |
1 ms |
312 KB |
Output is correct |
5 |
Correct |
0 ms |
312 KB |
Output is correct |
6 |
Correct |
0 ms |
308 KB |
Output is correct |
7 |
Correct |
1 ms |
212 KB |
Output is correct |
8 |
Correct |
0 ms |
212 KB |
Output is correct |
9 |
Correct |
1 ms |
212 KB |
Output is correct |
10 |
Correct |
0 ms |
212 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
468 KB |
Output is correct |
2 |
Correct |
1 ms |
588 KB |
Output is correct |
3 |
Correct |
2 ms |
596 KB |
Output is correct |
4 |
Correct |
1 ms |
724 KB |
Output is correct |
5 |
Correct |
2 ms |
596 KB |
Output is correct |
6 |
Correct |
2 ms |
724 KB |
Output is correct |
7 |
Correct |
2 ms |
584 KB |
Output is correct |
8 |
Correct |
2 ms |
724 KB |
Output is correct |
9 |
Correct |
2 ms |
716 KB |
Output is correct |
10 |
Correct |
1 ms |
724 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
245 ms |
65672 KB |
Output is correct |
2 |
Correct |
280 ms |
79516 KB |
Output is correct |
3 |
Correct |
251 ms |
79692 KB |
Output is correct |
4 |
Correct |
262 ms |
84776 KB |
Output is correct |
5 |
Correct |
296 ms |
74044 KB |
Output is correct |
6 |
Correct |
257 ms |
86052 KB |
Output is correct |
7 |
Correct |
286 ms |
75852 KB |
Output is correct |
8 |
Correct |
317 ms |
84224 KB |
Output is correct |
9 |
Correct |
340 ms |
80400 KB |
Output is correct |
10 |
Correct |
176 ms |
89464 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
292 ms |
61260 KB |
Output is correct |
2 |
Correct |
347 ms |
54348 KB |
Output is correct |
3 |
Correct |
233 ms |
67816 KB |
Output is correct |
4 |
Correct |
305 ms |
60728 KB |
Output is correct |
5 |
Correct |
246 ms |
77288 KB |
Output is correct |
6 |
Correct |
309 ms |
79636 KB |
Output is correct |
7 |
Correct |
277 ms |
79600 KB |
Output is correct |
8 |
Correct |
324 ms |
68936 KB |
Output is correct |
9 |
Correct |
412 ms |
66128 KB |
Output is correct |
10 |
Correct |
182 ms |
88496 KB |
Output is correct |