#include<stdio.h>
const int MAXC = 1000005;
const int lgMAXC = 20;
struct node{
char letter;
int level;
node* parent[lgMAXC];
node(char letter, node* par): letter(letter){
parent[0] = par;
if(par != NULL) level = par->level + 1; else level = 0;
for(int i=1; i<lgMAXC; i++){
if(parent[i-1] == NULL) parent[i] = NULL;
else parent[i] = parent[i-1]->parent[i-1];
}
}
};
node* Commands[MAXC];
node* now;
int N;
void Init(){
now = new node(0, NULL);
Commands[1] = now; N = 1;
}
void TypeLetter(char L){
Commands[++N] = new node(L, now);
now = Commands[N];
}
void UndoCommands(int U){
int val = N - U; Commands[++N] = Commands[val];
now = Commands[N];
}
char GetLetter(int P){ ++P;
node* tmp = now; int L = now->level - P;
for(int i=0; (1<<i)<=L; i++) if(L & (1<<i)){
tmp = tmp->parent[i];
}
return tmp->letter;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
9016 KB |
Output is correct |
2 |
Correct |
0 ms |
9148 KB |
Output is correct |
3 |
Correct |
0 ms |
9148 KB |
Output is correct |
4 |
Correct |
0 ms |
9148 KB |
Output is correct |
5 |
Correct |
0 ms |
9148 KB |
Output is correct |
6 |
Correct |
0 ms |
9148 KB |
Output is correct |
7 |
Correct |
0 ms |
9148 KB |
Output is correct |
8 |
Correct |
0 ms |
9148 KB |
Output is correct |
9 |
Correct |
0 ms |
9148 KB |
Output is correct |
10 |
Correct |
0 ms |
9148 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
9016 KB |
Output is correct |
2 |
Correct |
0 ms |
9148 KB |
Output is correct |
3 |
Correct |
0 ms |
9148 KB |
Output is correct |
4 |
Correct |
0 ms |
9148 KB |
Output is correct |
5 |
Correct |
0 ms |
9148 KB |
Output is correct |
6 |
Correct |
0 ms |
9148 KB |
Output is correct |
7 |
Correct |
0 ms |
9148 KB |
Output is correct |
8 |
Correct |
0 ms |
9148 KB |
Output is correct |
9 |
Correct |
0 ms |
9148 KB |
Output is correct |
10 |
Correct |
0 ms |
9148 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
9280 KB |
Output is correct |
2 |
Correct |
0 ms |
9280 KB |
Output is correct |
3 |
Correct |
0 ms |
9412 KB |
Output is correct |
4 |
Correct |
0 ms |
9544 KB |
Output is correct |
5 |
Correct |
0 ms |
9412 KB |
Output is correct |
6 |
Correct |
0 ms |
9676 KB |
Output is correct |
7 |
Correct |
0 ms |
9676 KB |
Output is correct |
8 |
Correct |
0 ms |
9544 KB |
Output is correct |
9 |
Correct |
0 ms |
9544 KB |
Output is correct |
10 |
Correct |
0 ms |
9280 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
556 ms |
108412 KB |
Output is correct |
2 |
Correct |
528 ms |
118444 KB |
Output is correct |
3 |
Correct |
384 ms |
116068 KB |
Output is correct |
4 |
Correct |
348 ms |
92176 KB |
Output is correct |
5 |
Correct |
476 ms |
101284 KB |
Output is correct |
6 |
Correct |
448 ms |
127684 KB |
Output is correct |
7 |
Correct |
440 ms |
62740 KB |
Output is correct |
8 |
Correct |
520 ms |
94156 KB |
Output is correct |
9 |
Correct |
616 ms |
130456 KB |
Output is correct |
10 |
Correct |
196 ms |
95608 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
516 ms |
92968 KB |
Output is correct |
2 |
Correct |
536 ms |
82144 KB |
Output is correct |
3 |
Correct |
380 ms |
89800 KB |
Output is correct |
4 |
Correct |
384 ms |
67228 KB |
Output is correct |
5 |
Correct |
432 ms |
97588 KB |
Output is correct |
6 |
Correct |
376 ms |
91780 KB |
Output is correct |
7 |
Correct |
424 ms |
97852 KB |
Output is correct |
8 |
Correct |
528 ms |
47428 KB |
Output is correct |
9 |
Correct |
608 ms |
83992 KB |
Output is correct |
10 |
Correct |
224 ms |
94684 KB |
Output is correct |