#include <iostream>
int const nmax = 1000000;
using ll = long long;
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
#define MAX(a, b) (((a) < (b)) ? (b) : (a))
char last;
int far[20][1 + nmax], ptr = 0;
int level[1 + nmax];
char chr[1 + nmax];
void Init() {}
void TypeLetter(char L) {
++ptr;
far[0][ptr] = ptr - 1;
for(int h = 1; h < 20; h++)
far[h][ptr] = far[h - 1][far[h - 1][ptr]];
level[ptr] = level[ptr - 1] + 1;
chr[ptr] = L;
}
void UndoCommands(int U) {
++ptr;
far[0][ptr] = far[0][ptr - 1 - U];
for(int h = 1; h < 20; h++)
far[h][ptr] = far[h - 1][far[h - 1][ptr]];
level[ptr] = level[ptr - 1 - U];
chr[ptr] = chr[ptr - 1 - U];
}
char GetLetter(int P) {
int target = level[ptr] - 1 - P;
int pos = ptr;
for(int h = 19; 0 <= h; h--)
if((target & (1 << h)))
pos = far[h][pos];
return chr[pos];
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
504 KB |
Output is correct |
2 |
Correct |
2 ms |
504 KB |
Output is correct |
3 |
Correct |
2 ms |
504 KB |
Output is correct |
4 |
Correct |
2 ms |
504 KB |
Output is correct |
5 |
Correct |
2 ms |
504 KB |
Output is correct |
6 |
Correct |
2 ms |
504 KB |
Output is correct |
7 |
Correct |
2 ms |
504 KB |
Output is correct |
8 |
Correct |
2 ms |
504 KB |
Output is correct |
9 |
Correct |
2 ms |
504 KB |
Output is correct |
10 |
Correct |
2 ms |
504 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
504 KB |
Output is correct |
2 |
Correct |
2 ms |
504 KB |
Output is correct |
3 |
Correct |
2 ms |
504 KB |
Output is correct |
4 |
Correct |
2 ms |
504 KB |
Output is correct |
5 |
Correct |
2 ms |
504 KB |
Output is correct |
6 |
Correct |
2 ms |
504 KB |
Output is correct |
7 |
Correct |
2 ms |
504 KB |
Output is correct |
8 |
Correct |
2 ms |
504 KB |
Output is correct |
9 |
Correct |
2 ms |
504 KB |
Output is correct |
10 |
Correct |
2 ms |
508 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
632 KB |
Output is correct |
2 |
Correct |
3 ms |
760 KB |
Output is correct |
3 |
Correct |
3 ms |
888 KB |
Output is correct |
4 |
Correct |
3 ms |
888 KB |
Output is correct |
5 |
Correct |
3 ms |
760 KB |
Output is correct |
6 |
Correct |
3 ms |
888 KB |
Output is correct |
7 |
Correct |
3 ms |
888 KB |
Output is correct |
8 |
Correct |
3 ms |
888 KB |
Output is correct |
9 |
Correct |
3 ms |
888 KB |
Output is correct |
10 |
Correct |
4 ms |
888 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
355 ms |
60020 KB |
Output is correct |
2 |
Correct |
440 ms |
73212 KB |
Output is correct |
3 |
Correct |
383 ms |
72788 KB |
Output is correct |
4 |
Correct |
453 ms |
76280 KB |
Output is correct |
5 |
Correct |
396 ms |
67320 KB |
Output is correct |
6 |
Correct |
320 ms |
79452 KB |
Output is correct |
7 |
Correct |
814 ms |
67964 KB |
Output is correct |
8 |
Correct |
749 ms |
76548 KB |
Output is correct |
9 |
Correct |
405 ms |
73616 KB |
Output is correct |
10 |
Correct |
291 ms |
82896 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
502 ms |
55152 KB |
Output is correct |
2 |
Correct |
575 ms |
47676 KB |
Output is correct |
3 |
Correct |
370 ms |
60668 KB |
Output is correct |
4 |
Correct |
406 ms |
52600 KB |
Output is correct |
5 |
Correct |
328 ms |
70536 KB |
Output is correct |
6 |
Correct |
358 ms |
72884 KB |
Output is correct |
7 |
Correct |
350 ms |
72824 KB |
Output is correct |
8 |
Correct |
816 ms |
61360 KB |
Output is correct |
9 |
Correct |
708 ms |
64476 KB |
Output is correct |
10 |
Correct |
288 ms |
85880 KB |
Output is correct |