/*DavitMarg*/
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
#include <map>
#include <set>
#include <queue>
#include <iomanip>
#include <bitset>
#include <stack>
#include <cassert>
#include <iterator>
#include <ctype.h>
#include <fstream>
#define mod 1000000007ll
#define LL long long
#define LD long double
#define MP make_pair
#define PB push_back
#define all(v) v.begin(), v.end()
using namespace std;
const int N = 1000000;
int k, n, up[N + 10][30], d[N + 10], ind[N + 10], v = 1, timer;
char a[N + 10];
void addNode(int p, char x)
{
v = ++n;
a[v] = x;
d[v] = d[p] + 1;
up[v][0] = p;
for (int i = 1; i <= k; i++)
up[v][i] = up[up[v][i - 1]][i - 1];
}
char get(int v, int cnt)
{
if (cnt == d[v])
return a[v];
for (int i = k; i >= 0; i--)
{
int p = up[v][i];
if (d[p] > cnt)
v = p;
}
return a[up[v][0]];
}
void Init()
{
while ((1 << k) <= N)
k++;
}
void TypeLetter(char x)
{
addNode(v, x);
ind[++timer] = v;
}
char GetLetter(int pos)
{
return get(v, pos + 1);
}
void UndoCommands(int cnt)
{
v = ind[timer + 1] = ind[timer - cnt];
timer++;
}
#ifdef death
int main()
{
Init();
TypeLetter('a');
TypeLetter('b');
TypeLetter('c');
cout << GetLetter(2) << endl;
TypeLetter('d');
UndoCommands(2);
UndoCommands(1);
cout << GetLetter(2) << endl;
return 0;
}
#endif
/*
*/
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
376 KB |
Output is correct |
3 |
Correct |
2 ms |
376 KB |
Output is correct |
4 |
Correct |
2 ms |
376 KB |
Output is correct |
5 |
Correct |
2 ms |
376 KB |
Output is correct |
6 |
Correct |
2 ms |
408 KB |
Output is correct |
7 |
Correct |
2 ms |
376 KB |
Output is correct |
8 |
Correct |
2 ms |
376 KB |
Output is correct |
9 |
Correct |
2 ms |
376 KB |
Output is correct |
10 |
Correct |
2 ms |
376 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
504 KB |
Output is correct |
3 |
Correct |
2 ms |
376 KB |
Output is correct |
4 |
Correct |
2 ms |
372 KB |
Output is correct |
5 |
Correct |
2 ms |
376 KB |
Output is correct |
6 |
Correct |
2 ms |
376 KB |
Output is correct |
7 |
Correct |
2 ms |
376 KB |
Output is correct |
8 |
Correct |
2 ms |
380 KB |
Output is correct |
9 |
Correct |
2 ms |
376 KB |
Output is correct |
10 |
Correct |
2 ms |
376 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
504 KB |
Output is correct |
2 |
Correct |
3 ms |
504 KB |
Output is correct |
3 |
Correct |
3 ms |
632 KB |
Output is correct |
4 |
Correct |
3 ms |
760 KB |
Output is correct |
5 |
Correct |
4 ms |
632 KB |
Output is correct |
6 |
Correct |
4 ms |
888 KB |
Output is correct |
7 |
Correct |
4 ms |
760 KB |
Output is correct |
8 |
Correct |
3 ms |
760 KB |
Output is correct |
9 |
Correct |
4 ms |
760 KB |
Output is correct |
10 |
Correct |
4 ms |
636 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
513 ms |
74464 KB |
Output is correct |
2 |
Correct |
563 ms |
85820 KB |
Output is correct |
3 |
Correct |
442 ms |
84976 KB |
Output is correct |
4 |
Correct |
461 ms |
69624 KB |
Output is correct |
5 |
Correct |
626 ms |
74312 KB |
Output is correct |
6 |
Correct |
473 ms |
92796 KB |
Output is correct |
7 |
Correct |
489 ms |
48180 KB |
Output is correct |
8 |
Correct |
474 ms |
70136 KB |
Output is correct |
9 |
Correct |
817 ms |
94968 KB |
Output is correct |
10 |
Correct |
250 ms |
69780 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
661 ms |
63248 KB |
Output is correct |
2 |
Correct |
813 ms |
60876 KB |
Output is correct |
3 |
Correct |
446 ms |
66488 KB |
Output is correct |
4 |
Correct |
487 ms |
51596 KB |
Output is correct |
5 |
Correct |
443 ms |
71672 KB |
Output is correct |
6 |
Correct |
414 ms |
67456 KB |
Output is correct |
7 |
Correct |
531 ms |
71828 KB |
Output is correct |
8 |
Correct |
622 ms |
37084 KB |
Output is correct |
9 |
Correct |
839 ms |
62720 KB |
Output is correct |
10 |
Correct |
244 ms |
69344 KB |
Output is correct |