/*
store what letter is 2^0 ahead, 2^1 ahead, ...
*/
char last;
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define For(i, a, b) for(int i=a; i<b; i++)
#define ffi For(i, 0, N)
#define ffj For(j, 0, M)
#define ffa ffi ffj
#define s <<" "<<
#define c <<" : "<<
#define w cout
#define e "\n"
#define pb push_back
#define mp make_pair
#define a first
#define b second
//#define int ll
const int MAXN=1000001;
///500,000,000
int N, pt[MAXN], len[MAXN], up[MAXN][20];
char let[MAXN];
bool num[MAXN];
void Init() {}
void TypeLetter(char L) {
N++;
let[N] = L;
if (num[N-1]) up[N][0] = pt[N-1];
else up[N][0] = N-1;
len[N] = 1+len[up[N][0]];
For (k, 1, 20) up[N][k] = up[up[N][k-1]][k-1];
}
void UndoCommands(int U) {
N++;
pt[N] = N-U-1;
num[N] = true;
if (num[pt[N]]) pt[N] = pt[pt[N]];
}
char GetLetter(int P) {
int at = N;
if (num[at]) at = pt[at];
int x = len[at]-1-P;
for (int k=19; k>=0; k--) if (x & (1<<k)) at = up[at][k];
return let[at];
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
504 KB |
Output is correct |
2 |
Correct |
2 ms |
516 KB |
Output is correct |
3 |
Correct |
2 ms |
632 KB |
Output is correct |
4 |
Correct |
2 ms |
724 KB |
Output is correct |
5 |
Correct |
2 ms |
724 KB |
Output is correct |
6 |
Correct |
2 ms |
724 KB |
Output is correct |
7 |
Correct |
2 ms |
892 KB |
Output is correct |
8 |
Correct |
2 ms |
892 KB |
Output is correct |
9 |
Correct |
2 ms |
892 KB |
Output is correct |
10 |
Correct |
2 ms |
892 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
972 KB |
Output is correct |
2 |
Correct |
2 ms |
972 KB |
Output is correct |
3 |
Correct |
2 ms |
984 KB |
Output is correct |
4 |
Correct |
2 ms |
984 KB |
Output is correct |
5 |
Correct |
2 ms |
988 KB |
Output is correct |
6 |
Correct |
2 ms |
988 KB |
Output is correct |
7 |
Correct |
2 ms |
996 KB |
Output is correct |
8 |
Correct |
2 ms |
1000 KB |
Output is correct |
9 |
Correct |
2 ms |
1008 KB |
Output is correct |
10 |
Correct |
2 ms |
1008 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
1140 KB |
Output is correct |
2 |
Correct |
4 ms |
1324 KB |
Output is correct |
3 |
Correct |
3 ms |
1620 KB |
Output is correct |
4 |
Correct |
3 ms |
1620 KB |
Output is correct |
5 |
Correct |
3 ms |
1620 KB |
Output is correct |
6 |
Correct |
3 ms |
1640 KB |
Output is correct |
7 |
Correct |
3 ms |
1660 KB |
Output is correct |
8 |
Correct |
3 ms |
1684 KB |
Output is correct |
9 |
Correct |
4 ms |
1712 KB |
Output is correct |
10 |
Correct |
4 ms |
1792 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
490 ms |
67988 KB |
Output is correct |
2 |
Correct |
533 ms |
85732 KB |
Output is correct |
3 |
Correct |
425 ms |
90048 KB |
Output is correct |
4 |
Correct |
424 ms |
99860 KB |
Output is correct |
5 |
Correct |
543 ms |
99860 KB |
Output is correct |
6 |
Correct |
472 ms |
112412 KB |
Output is correct |
7 |
Correct |
567 ms |
112412 KB |
Output is correct |
8 |
Correct |
561 ms |
120460 KB |
Output is correct |
9 |
Correct |
600 ms |
121448 KB |
Output is correct |
10 |
Correct |
261 ms |
135552 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
640 ms |
135552 KB |
Output is correct |
2 |
Correct |
725 ms |
135552 KB |
Output is correct |
3 |
Correct |
388 ms |
135552 KB |
Output is correct |
4 |
Correct |
409 ms |
135552 KB |
Output is correct |
5 |
Correct |
495 ms |
148564 KB |
Output is correct |
6 |
Correct |
445 ms |
155932 KB |
Output is correct |
7 |
Correct |
454 ms |
160292 KB |
Output is correct |
8 |
Correct |
627 ms |
160292 KB |
Output is correct |
9 |
Correct |
762 ms |
160292 KB |
Output is correct |
10 |
Correct |
266 ms |
184616 KB |
Output is correct |