const int MX = 1000010;
char p[MX];
int up[MX][20],a[MX],cnt,dep[MX];
void Init(){dep[0]=-1;}
void TypeLetter(char L){
++cnt;
p[cnt]=L;
a[cnt]=cnt;
up[cnt][0]=a[cnt-1];
dep[cnt]=dep[a[cnt-1]]+1;
int i,tmp=up[cnt][0];
for(i=1;i<20;i++){
if(up[tmp][i-1]){
up[cnt][i]=up[tmp][i-1];
tmp=up[cnt][i];
}
else break;
}
}
void UndoCommands(int U){
a[cnt+1]=a[cnt-U];
cnt++;
}
char GetLetter(int P){
int i,tmp=a[cnt];
for(i=19;i>=0;i--){
if(dep[up[tmp][i]]<P)continue;
tmp=up[tmp][i];
}
return p[tmp];
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
87992 KB |
Output is correct |
2 |
Correct |
0 ms |
87992 KB |
Output is correct |
3 |
Correct |
0 ms |
87992 KB |
Output is correct |
4 |
Correct |
0 ms |
87992 KB |
Output is correct |
5 |
Correct |
0 ms |
87992 KB |
Output is correct |
6 |
Correct |
0 ms |
87992 KB |
Output is correct |
7 |
Correct |
0 ms |
87992 KB |
Output is correct |
8 |
Correct |
0 ms |
87992 KB |
Output is correct |
9 |
Correct |
0 ms |
87992 KB |
Output is correct |
10 |
Correct |
0 ms |
87992 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
87992 KB |
Output is correct |
2 |
Correct |
0 ms |
87992 KB |
Output is correct |
3 |
Correct |
0 ms |
87992 KB |
Output is correct |
4 |
Correct |
0 ms |
87992 KB |
Output is correct |
5 |
Correct |
0 ms |
87992 KB |
Output is correct |
6 |
Correct |
0 ms |
87992 KB |
Output is correct |
7 |
Correct |
0 ms |
87992 KB |
Output is correct |
8 |
Correct |
0 ms |
87992 KB |
Output is correct |
9 |
Correct |
0 ms |
87992 KB |
Output is correct |
10 |
Correct |
0 ms |
87992 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
87992 KB |
Output is correct |
2 |
Correct |
0 ms |
87992 KB |
Output is correct |
3 |
Correct |
0 ms |
87992 KB |
Output is correct |
4 |
Correct |
0 ms |
87992 KB |
Output is correct |
5 |
Correct |
0 ms |
87992 KB |
Output is correct |
6 |
Correct |
0 ms |
87992 KB |
Output is correct |
7 |
Correct |
0 ms |
87992 KB |
Output is correct |
8 |
Correct |
0 ms |
87992 KB |
Output is correct |
9 |
Correct |
0 ms |
87992 KB |
Output is correct |
10 |
Correct |
0 ms |
87992 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
392 ms |
87992 KB |
Output is correct |
2 |
Correct |
400 ms |
87992 KB |
Output is correct |
3 |
Correct |
332 ms |
87992 KB |
Output is correct |
4 |
Correct |
328 ms |
87992 KB |
Output is correct |
5 |
Correct |
456 ms |
87992 KB |
Output is correct |
6 |
Correct |
364 ms |
87992 KB |
Output is correct |
7 |
Correct |
488 ms |
87992 KB |
Output is correct |
8 |
Correct |
460 ms |
87992 KB |
Output is correct |
9 |
Correct |
468 ms |
87992 KB |
Output is correct |
10 |
Correct |
188 ms |
87992 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
568 ms |
87992 KB |
Output is correct |
2 |
Correct |
640 ms |
87992 KB |
Output is correct |
3 |
Correct |
360 ms |
87992 KB |
Output is correct |
4 |
Correct |
408 ms |
87992 KB |
Output is correct |
5 |
Correct |
428 ms |
87992 KB |
Output is correct |
6 |
Correct |
392 ms |
87992 KB |
Output is correct |
7 |
Correct |
416 ms |
87992 KB |
Output is correct |
8 |
Correct |
596 ms |
87992 KB |
Output is correct |
9 |
Correct |
700 ms |
87992 KB |
Output is correct |
10 |
Correct |
188 ms |
87992 KB |
Output is correct |