#include <string>
#include <vector>
#include <iostream>
using namespace std;
int const N=1e6+10;
struct node
{
char c=' ';
int sz=0;
node* par[22]={};
node()
{
for (int i=0;i<22;i++)
par[i]=NULL;
}
};
vector<node*>re;
node* cur;
void Init()
{
cur=NULL;
re.push_back(cur);
}
void TypeLetter(char L)
{
if (cur==NULL)
{
cur=new node();
cur->c=L;
cur->sz=1;
re.push_back(cur);
return;
}
node* z=new node();
z->par[0]=cur;
for (int i=1;i<22;i++)
{
if (z->par[i-1]==NULL)
break;
z->par[i]=z->par[i-1]->par[i-1];
}
z->c=L;
z->sz=cur->sz+1;
cur=z;
re.push_back(cur);
}
void UndoCommands(int U)
{
cur=re[re.size()-U-1];
re.push_back(cur);
}
char GetLetter(int P)
{
P=cur->sz-P-1;
node* temp=cur;
for (int i=0;i<22;i++)
{
if ((1<<i)&P)
temp=temp->par[i];
}
return temp->c;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
344 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
1 ms |
344 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
1 ms |
348 KB |
Output is correct |
8 |
Correct |
1 ms |
344 KB |
Output is correct |
9 |
Correct |
0 ms |
344 KB |
Output is correct |
10 |
Correct |
0 ms |
344 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
0 ms |
348 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
1 ms |
348 KB |
Output is correct |
8 |
Correct |
0 ms |
348 KB |
Output is correct |
9 |
Correct |
1 ms |
348 KB |
Output is correct |
10 |
Correct |
0 ms |
348 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
604 KB |
Output is correct |
2 |
Correct |
1 ms |
604 KB |
Output is correct |
3 |
Correct |
1 ms |
604 KB |
Output is correct |
4 |
Correct |
1 ms |
1112 KB |
Output is correct |
5 |
Correct |
1 ms |
600 KB |
Output is correct |
6 |
Correct |
2 ms |
1112 KB |
Output is correct |
7 |
Correct |
1 ms |
1116 KB |
Output is correct |
8 |
Correct |
1 ms |
860 KB |
Output is correct |
9 |
Correct |
1 ms |
860 KB |
Output is correct |
10 |
Correct |
2 ms |
860 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
420 ms |
116400 KB |
Output is correct |
2 |
Correct |
492 ms |
127080 KB |
Output is correct |
3 |
Correct |
331 ms |
124292 KB |
Output is correct |
4 |
Correct |
303 ms |
98812 KB |
Output is correct |
5 |
Correct |
383 ms |
109432 KB |
Output is correct |
6 |
Correct |
417 ms |
137880 KB |
Output is correct |
7 |
Correct |
310 ms |
66992 KB |
Output is correct |
8 |
Correct |
398 ms |
100956 KB |
Output is correct |
9 |
Correct |
533 ms |
140180 KB |
Output is correct |
10 |
Correct |
189 ms |
102716 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
409 ms |
98480 KB |
Output is correct |
2 |
Correct |
459 ms |
92076 KB |
Output is correct |
3 |
Correct |
325 ms |
102160 KB |
Output is correct |
4 |
Correct |
274 ms |
77260 KB |
Output is correct |
5 |
Correct |
394 ms |
109892 KB |
Output is correct |
6 |
Correct |
327 ms |
102320 KB |
Output is correct |
7 |
Correct |
342 ms |
109488 KB |
Output is correct |
8 |
Correct |
442 ms |
55472 KB |
Output is correct |
9 |
Correct |
502 ms |
93832 KB |
Output is correct |
10 |
Correct |
193 ms |
106160 KB |
Output is correct |