#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
#define MAX_N 1000000
#define MAX_LN 20
vector<char> c;
int idx[MAX_N+1];
int fr[MAX_N+1][MAX_LN+1];
int ln[MAX_N+1];
int index=0;
int t = 0;
void Init(){
c.clear();
ln[0] = -1;
index = t = 0;
}
void TypeLetter(char L) {
//cout<<index<<endl;
fr[c.size()][0] = index;
ln[c.size()] = ln[index]+1;
index = c.size();
c.push_back(L);
for(int i=1; i<=MAX_LN; i++){
fr[index][i] = fr[fr[index][i-1]][i-1];
}
idx[t++] = index;
}
void UndoCommands(int U) {
//cout<<index<<endl;
index = idx[t-U-1];
idx[t++] = index;
}
char GetLetter(int P) {
//cout<<index<<endl;
int now = index;
P = ln[now] - P;
int k = (1<<20);
for(int i=20; i>=0; i--){
if(k<=P){
P-=k;
now = fr[now][i];
}
k = (k>>1);
}
//cout<<"*"<<now<<endl;
return c[now];
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
376 KB |
Output is correct |
3 |
Correct |
2 ms |
376 KB |
Output is correct |
4 |
Correct |
2 ms |
376 KB |
Output is correct |
5 |
Correct |
2 ms |
376 KB |
Output is correct |
6 |
Correct |
2 ms |
376 KB |
Output is correct |
7 |
Correct |
2 ms |
376 KB |
Output is correct |
8 |
Correct |
2 ms |
376 KB |
Output is correct |
9 |
Correct |
2 ms |
376 KB |
Output is correct |
10 |
Correct |
2 ms |
248 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
1 ms |
376 KB |
Output is correct |
3 |
Correct |
2 ms |
376 KB |
Output is correct |
4 |
Correct |
2 ms |
376 KB |
Output is correct |
5 |
Correct |
2 ms |
376 KB |
Output is correct |
6 |
Correct |
2 ms |
376 KB |
Output is correct |
7 |
Correct |
2 ms |
376 KB |
Output is correct |
8 |
Correct |
2 ms |
376 KB |
Output is correct |
9 |
Correct |
2 ms |
376 KB |
Output is correct |
10 |
Correct |
2 ms |
376 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
508 KB |
Output is correct |
2 |
Correct |
3 ms |
504 KB |
Output is correct |
3 |
Correct |
3 ms |
552 KB |
Output is correct |
4 |
Correct |
3 ms |
760 KB |
Output is correct |
5 |
Correct |
3 ms |
632 KB |
Output is correct |
6 |
Correct |
3 ms |
760 KB |
Output is correct |
7 |
Correct |
3 ms |
760 KB |
Output is correct |
8 |
Correct |
3 ms |
632 KB |
Output is correct |
9 |
Correct |
3 ms |
632 KB |
Output is correct |
10 |
Correct |
3 ms |
504 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
615 ms |
57544 KB |
Output is correct |
2 |
Correct |
656 ms |
63532 KB |
Output is correct |
3 |
Correct |
401 ms |
63084 KB |
Output is correct |
4 |
Correct |
378 ms |
52596 KB |
Output is correct |
5 |
Correct |
503 ms |
55532 KB |
Output is correct |
6 |
Correct |
355 ms |
68592 KB |
Output is correct |
7 |
Correct |
403 ms |
37236 KB |
Output is correct |
8 |
Correct |
343 ms |
52724 KB |
Output is correct |
9 |
Correct |
656 ms |
70252 KB |
Output is correct |
10 |
Correct |
204 ms |
52224 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
683 ms |
50620 KB |
Output is correct |
2 |
Correct |
750 ms |
46068 KB |
Output is correct |
3 |
Correct |
365 ms |
50036 KB |
Output is correct |
4 |
Correct |
344 ms |
39928 KB |
Output is correct |
5 |
Correct |
385 ms |
53488 KB |
Output is correct |
6 |
Correct |
392 ms |
50676 KB |
Output is correct |
7 |
Correct |
455 ms |
53748 KB |
Output is correct |
8 |
Correct |
591 ms |
29408 KB |
Output is correct |
9 |
Correct |
841 ms |
47472 KB |
Output is correct |
10 |
Correct |
203 ms |
51888 KB |
Output is correct |