#include <stdlib.h>
#include <stdio.h>
#define MAXK 1000006
static int K;
static struct STATE{
int len;
char letter;
STATE *prev[20];
} *state[MAXK];
void Init() {}
STATE *make(int len, char letter, STATE *prev)
{
STATE *ret=(STATE*)malloc(sizeof(STATE));
ret->len = len; ret->letter = letter;
for (int i=0;i<20;i++) ret->prev[i] = NULL;
ret->prev[0] = prev;
for (int i=0;i<19&&ret->prev[i];i++){
ret->prev[i+1] = ret->prev[i]->prev[i];
}
return ret;
}
void TypeLetter(char letter)
{
STATE *tmp;
if (state[K]) tmp = make(state[K]->len+1,letter,state[K]);
else tmp = make(1,letter,NULL);
state[++K] = tmp;
}
void UndoCommands(int steps)
{
state[++K] = state[K-steps-1];
}
char GetLetter(int pos)
{
STATE *now=state[K];
int bef=now->len-pos-1,i;
for (i=20;i--;) if ((bef>>i)&1){
now = now->prev[i];
}
return now->letter;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
8892 KB |
Output is correct |
2 |
Correct |
0 ms |
9024 KB |
Output is correct |
3 |
Correct |
0 ms |
9024 KB |
Output is correct |
4 |
Correct |
0 ms |
9024 KB |
Output is correct |
5 |
Correct |
0 ms |
9024 KB |
Output is correct |
6 |
Correct |
0 ms |
9024 KB |
Output is correct |
7 |
Correct |
0 ms |
9024 KB |
Output is correct |
8 |
Correct |
0 ms |
9024 KB |
Output is correct |
9 |
Correct |
0 ms |
9024 KB |
Output is correct |
10 |
Correct |
0 ms |
9024 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
8892 KB |
Output is correct |
2 |
Correct |
0 ms |
9024 KB |
Output is correct |
3 |
Correct |
0 ms |
9024 KB |
Output is correct |
4 |
Correct |
0 ms |
9024 KB |
Output is correct |
5 |
Correct |
0 ms |
9024 KB |
Output is correct |
6 |
Correct |
0 ms |
9024 KB |
Output is correct |
7 |
Correct |
0 ms |
9024 KB |
Output is correct |
8 |
Correct |
0 ms |
9024 KB |
Output is correct |
9 |
Correct |
0 ms |
9024 KB |
Output is correct |
10 |
Correct |
0 ms |
9024 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
9156 KB |
Output is correct |
2 |
Correct |
0 ms |
9156 KB |
Output is correct |
3 |
Correct |
0 ms |
9288 KB |
Output is correct |
4 |
Correct |
0 ms |
9420 KB |
Output is correct |
5 |
Correct |
0 ms |
9288 KB |
Output is correct |
6 |
Correct |
0 ms |
9552 KB |
Output is correct |
7 |
Correct |
0 ms |
9552 KB |
Output is correct |
8 |
Correct |
0 ms |
9420 KB |
Output is correct |
9 |
Correct |
0 ms |
9420 KB |
Output is correct |
10 |
Correct |
0 ms |
9156 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
488 ms |
108288 KB |
Output is correct |
2 |
Correct |
468 ms |
118320 KB |
Output is correct |
3 |
Correct |
360 ms |
115944 KB |
Output is correct |
4 |
Correct |
352 ms |
92052 KB |
Output is correct |
5 |
Correct |
428 ms |
101160 KB |
Output is correct |
6 |
Correct |
484 ms |
127560 KB |
Output is correct |
7 |
Correct |
448 ms |
62616 KB |
Output is correct |
8 |
Correct |
492 ms |
94032 KB |
Output is correct |
9 |
Correct |
596 ms |
130332 KB |
Output is correct |
10 |
Correct |
204 ms |
95484 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
632 ms |
92844 KB |
Output is correct |
2 |
Correct |
612 ms |
82020 KB |
Output is correct |
3 |
Correct |
316 ms |
89676 KB |
Output is correct |
4 |
Correct |
352 ms |
67104 KB |
Output is correct |
5 |
Correct |
432 ms |
97464 KB |
Output is correct |
6 |
Correct |
384 ms |
91656 KB |
Output is correct |
7 |
Correct |
404 ms |
97728 KB |
Output is correct |
8 |
Correct |
524 ms |
47304 KB |
Output is correct |
9 |
Correct |
684 ms |
83868 KB |
Output is correct |
10 |
Correct |
208 ms |
94560 KB |
Output is correct |