#include<bits/stdc++.h>
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
using namespace std;
#define inbuf_len 1 << 16
#define outbuf_len 1 << 16
int siz[1000005],succ[1000005][22],cont;
char c[1000005];
void Init(){
siz[0]=0;
for(int i=0;i<1000005;i++)for(int j=0;j<22;j++)succ[i][j]=-1;
cont=1;
succ[0][0]=0;
return;
}
void TypeLetter(char L){
c[cont]=L;
siz[cont]=siz[cont-1]+1;
succ[cont][0]=cont;
succ[cont][1]=succ[cont-1][0];
for(int i=2;i<22;i++){
if(succ[cont][i-1]!=-1)
succ[cont][i]=succ[succ[cont][i-1]][i-1];
else break;
}
cont++;
}
void UndoCommands(int U){
siz[cont]=siz[cont-1-U];
for(int i=0;i<22;i++){
if(succ[cont-1-U][i]!=-1)
succ[cont][i]=succ[cont-1-U][i];
else break;
}
cont++;
}
char GetLetter(int P){
int num=siz[cont-1]-1-P,pos=cont-1;
for(int j=21;j>=1;j--){
if((1ll<<(j-1ll))<=num){
num-=(1ll<<(j-1ll));
pos=succ[pos][j];
}
if(num==0)break;
}
/*
cout<<"debug"<<endl;
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
cout<<succ[i][j]<<" ";
}
cout<<endl;
}
cout<<"-------------"<<endl;
*/
return c[succ[pos][0]];
}
/*
int main() {
Init();
int cmd_num,tmp;
tmp = scanf("%d", &cmd_num);
assert(tmp == 1);
int i;
for (i = 0; i < cmd_num; i++) {
char cmd;
tmp = scanf(" %c", &cmd);
assert(tmp == 1);
if (cmd == 'T') {
char letter;
tmp = scanf(" %c", &letter);
assert(tmp == 1);
TypeLetter(letter);
}
else if (cmd == 'U') {
int number;
tmp = scanf("%d", &number);
assert(tmp == 1);
UndoCommands(number);
}
else if (cmd == 'P') {
int index;
char letter;
tmp = scanf("%d", &index);
assert(tmp == 1);
letter = GetLetter(index);
printf("%c\n", letter);
}
}
puts("Let's test for cheating!!");
return 0;
}*/
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
86 ms |
86392 KB |
Output is correct |
2 |
Correct |
86 ms |
86492 KB |
Output is correct |
3 |
Correct |
86 ms |
86392 KB |
Output is correct |
4 |
Correct |
97 ms |
86500 KB |
Output is correct |
5 |
Correct |
86 ms |
86392 KB |
Output is correct |
6 |
Correct |
85 ms |
86392 KB |
Output is correct |
7 |
Correct |
90 ms |
86520 KB |
Output is correct |
8 |
Correct |
86 ms |
86520 KB |
Output is correct |
9 |
Correct |
86 ms |
86520 KB |
Output is correct |
10 |
Correct |
85 ms |
86520 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
101 ms |
86436 KB |
Output is correct |
2 |
Correct |
87 ms |
86416 KB |
Output is correct |
3 |
Correct |
102 ms |
86608 KB |
Output is correct |
4 |
Correct |
103 ms |
86480 KB |
Output is correct |
5 |
Correct |
90 ms |
86356 KB |
Output is correct |
6 |
Correct |
88 ms |
86520 KB |
Output is correct |
7 |
Correct |
93 ms |
86520 KB |
Output is correct |
8 |
Correct |
90 ms |
86520 KB |
Output is correct |
9 |
Correct |
86 ms |
86520 KB |
Output is correct |
10 |
Correct |
87 ms |
86520 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
87 ms |
86392 KB |
Output is correct |
2 |
Correct |
87 ms |
86648 KB |
Output is correct |
3 |
Correct |
88 ms |
86520 KB |
Output is correct |
4 |
Correct |
88 ms |
86524 KB |
Output is correct |
5 |
Correct |
88 ms |
86520 KB |
Output is correct |
6 |
Correct |
91 ms |
86520 KB |
Output is correct |
7 |
Correct |
87 ms |
86520 KB |
Output is correct |
8 |
Correct |
87 ms |
86648 KB |
Output is correct |
9 |
Correct |
88 ms |
86520 KB |
Output is correct |
10 |
Correct |
88 ms |
86520 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
542 ms |
90544 KB |
Output is correct |
2 |
Correct |
616 ms |
91128 KB |
Output is correct |
3 |
Correct |
495 ms |
91280 KB |
Output is correct |
4 |
Correct |
503 ms |
91616 KB |
Output is correct |
5 |
Correct |
521 ms |
91128 KB |
Output is correct |
6 |
Correct |
442 ms |
91588 KB |
Output is correct |
7 |
Correct |
618 ms |
91244 KB |
Output is correct |
8 |
Correct |
603 ms |
91684 KB |
Output is correct |
9 |
Correct |
619 ms |
91644 KB |
Output is correct |
10 |
Correct |
268 ms |
92020 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
678 ms |
90812 KB |
Output is correct |
2 |
Correct |
793 ms |
90648 KB |
Output is correct |
3 |
Correct |
432 ms |
91084 KB |
Output is correct |
4 |
Correct |
457 ms |
91020 KB |
Output is correct |
5 |
Correct |
458 ms |
91556 KB |
Output is correct |
6 |
Correct |
455 ms |
91716 KB |
Output is correct |
7 |
Correct |
477 ms |
91616 KB |
Output is correct |
8 |
Correct |
755 ms |
91256 KB |
Output is correct |
9 |
Correct |
778 ms |
91084 KB |
Output is correct |
10 |
Correct |
275 ms |
95376 KB |
Output is correct |