const int lgMAXN = 20;
const int MAXN = 1 << 20;
int len;
int arr[MAXN];
int sparse[MAXN][lgMAXN];
void Init() {
len = 0;
}
void TypeLetter(char L) {
arr[++len] = L;
sparse[len][0] = len;
for(int i=1; i<lgMAXN; ++i)
if(sparse[len][i-1] == 0) sparse[len][i] = 0;
else sparse[len][i] = sparse[sparse[len][i-1]-1][i-1];
}
void UndoCommands(int U) {
arr[++len] = -U;
for(int i=0; i<lgMAXN; ++i)
sparse[len][i] = sparse[len-U-1][i];
}
char GetLetter(int P) {
int c = 0, idx = len;
for(int i=lgMAXN-1; i>=0; --i)
if(sparse[idx][i])
{
c += (1<<i);
idx = sparse[idx][i]-1;
}
int ans = len;
for(int i=lgMAXN-1; i>=0; --i)
if((c-P)&(1<<i))
ans = sparse[ans][i]-1;
return arr[ans+1];
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
488 KB |
Output is correct |
3 |
Correct |
3 ms |
488 KB |
Output is correct |
4 |
Correct |
2 ms |
488 KB |
Output is correct |
5 |
Correct |
3 ms |
648 KB |
Output is correct |
6 |
Correct |
2 ms |
648 KB |
Output is correct |
7 |
Correct |
2 ms |
648 KB |
Output is correct |
8 |
Correct |
2 ms |
648 KB |
Output is correct |
9 |
Correct |
2 ms |
648 KB |
Output is correct |
10 |
Correct |
2 ms |
788 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
788 KB |
Output is correct |
2 |
Correct |
2 ms |
788 KB |
Output is correct |
3 |
Correct |
2 ms |
788 KB |
Output is correct |
4 |
Correct |
2 ms |
788 KB |
Output is correct |
5 |
Correct |
2 ms |
788 KB |
Output is correct |
6 |
Correct |
2 ms |
788 KB |
Output is correct |
7 |
Correct |
2 ms |
788 KB |
Output is correct |
8 |
Correct |
2 ms |
788 KB |
Output is correct |
9 |
Correct |
2 ms |
788 KB |
Output is correct |
10 |
Correct |
2 ms |
788 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
904 KB |
Output is correct |
2 |
Correct |
4 ms |
1064 KB |
Output is correct |
3 |
Correct |
3 ms |
1112 KB |
Output is correct |
4 |
Correct |
3 ms |
1260 KB |
Output is correct |
5 |
Correct |
4 ms |
1260 KB |
Output is correct |
6 |
Correct |
3 ms |
1356 KB |
Output is correct |
7 |
Correct |
3 ms |
1368 KB |
Output is correct |
8 |
Correct |
3 ms |
1408 KB |
Output is correct |
9 |
Correct |
3 ms |
1444 KB |
Output is correct |
10 |
Correct |
3 ms |
1456 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
669 ms |
63624 KB |
Output is correct |
2 |
Correct |
761 ms |
80588 KB |
Output is correct |
3 |
Correct |
501 ms |
84836 KB |
Output is correct |
4 |
Correct |
419 ms |
94548 KB |
Output is correct |
5 |
Correct |
441 ms |
94548 KB |
Output is correct |
6 |
Correct |
401 ms |
106356 KB |
Output is correct |
7 |
Correct |
596 ms |
106356 KB |
Output is correct |
8 |
Correct |
542 ms |
114944 KB |
Output is correct |
9 |
Correct |
537 ms |
116220 KB |
Output is correct |
10 |
Correct |
250 ms |
129356 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
880 ms |
129356 KB |
Output is correct |
2 |
Correct |
923 ms |
129356 KB |
Output is correct |
3 |
Correct |
392 ms |
129356 KB |
Output is correct |
4 |
Correct |
434 ms |
129356 KB |
Output is correct |
5 |
Correct |
489 ms |
143316 KB |
Output is correct |
6 |
Correct |
450 ms |
150164 KB |
Output is correct |
7 |
Correct |
472 ms |
154484 KB |
Output is correct |
8 |
Correct |
593 ms |
154484 KB |
Output is correct |
9 |
Correct |
716 ms |
154484 KB |
Output is correct |
10 |
Correct |
245 ms |
179004 KB |
Output is correct |