#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define fast_io() ios::sync_with_stdio(false)
#define FOR(i, l, r) for(int i = (l); i < (r); i++)
char nodes[1000100]; int sz[1000100];
int lift[1000100][21];
int numVersions = 0;
int insert(int l, char c){
int ver = numVersions++;
nodes[ver] = c;
sz[ver] = sz[l]+1;
//cerr<<getsz(l) << " " << l->lift.size() << endl;
int i = 0;
while(true){
//cout<<getsz(l)<<endl;
lift[ver][i] = l;
//cout<<nl->lift.size()<<endl;
if(lift[l][i] == -1) return ver;
l = lift[l][i++];
}
}
char getletter(int l, int i){
//cerr<<getsz(l) << " " << l->lift.size() << endl;
FOR(k, 0, 21) if(i & (1<<k)) l = lift[l][k];
return nodes[l];
}
void Init() {
sz[0] = nodes[0] = 0;
numVersions = 1;
FOR(i, 0, 1000100) FOR(j, 0, 21) lift[i][j] = -1;
}
void TypeLetter(char L) {
//for(auto l : v) cout << getsz(l) << " " << (l ? to_string(l->lift.size()) :"") << endl;
insert(numVersions-1, L);
}
void UndoCommands(int U) {
int o = numVersions - 1 - U, n = numVersions++;
nodes[n] = nodes[o];
sz[n] = sz[o];
FOR(i, 0, 21) lift[n][i] = lift[o][i];
}
char GetLetter(int P) {
int v = numVersions - 1;
return getletter(v, sz[v]-1 - P);
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
76 ms |
82552 KB |
Output is correct |
2 |
Correct |
86 ms |
82660 KB |
Output is correct |
3 |
Correct |
79 ms |
82660 KB |
Output is correct |
4 |
Correct |
86 ms |
82684 KB |
Output is correct |
5 |
Correct |
90 ms |
82756 KB |
Output is correct |
6 |
Correct |
106 ms |
82844 KB |
Output is correct |
7 |
Correct |
79 ms |
82844 KB |
Output is correct |
8 |
Correct |
87 ms |
82844 KB |
Output is correct |
9 |
Correct |
95 ms |
82844 KB |
Output is correct |
10 |
Correct |
104 ms |
82844 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
93 ms |
82896 KB |
Output is correct |
2 |
Correct |
96 ms |
82896 KB |
Output is correct |
3 |
Correct |
85 ms |
82896 KB |
Output is correct |
4 |
Correct |
81 ms |
82896 KB |
Output is correct |
5 |
Correct |
87 ms |
82896 KB |
Output is correct |
6 |
Correct |
83 ms |
82896 KB |
Output is correct |
7 |
Correct |
82 ms |
82896 KB |
Output is correct |
8 |
Correct |
96 ms |
82896 KB |
Output is correct |
9 |
Correct |
78 ms |
82896 KB |
Output is correct |
10 |
Correct |
82 ms |
82896 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
100 ms |
82896 KB |
Output is correct |
2 |
Correct |
87 ms |
82956 KB |
Output is correct |
3 |
Correct |
83 ms |
82956 KB |
Output is correct |
4 |
Correct |
101 ms |
82956 KB |
Output is correct |
5 |
Correct |
91 ms |
82956 KB |
Output is correct |
6 |
Correct |
89 ms |
82956 KB |
Output is correct |
7 |
Correct |
91 ms |
82956 KB |
Output is correct |
8 |
Correct |
94 ms |
82956 KB |
Output is correct |
9 |
Correct |
82 ms |
82956 KB |
Output is correct |
10 |
Correct |
93 ms |
82956 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
778 ms |
86628 KB |
Output is correct |
2 |
Correct |
894 ms |
87420 KB |
Output is correct |
3 |
Correct |
517 ms |
87420 KB |
Output is correct |
4 |
Correct |
562 ms |
91148 KB |
Output is correct |
5 |
Correct |
703 ms |
91172 KB |
Output is correct |
6 |
Correct |
517 ms |
91604 KB |
Output is correct |
7 |
Correct |
768 ms |
91604 KB |
Output is correct |
8 |
Correct |
828 ms |
91604 KB |
Output is correct |
9 |
Correct |
742 ms |
91604 KB |
Output is correct |
10 |
Correct |
288 ms |
91628 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
754 ms |
91628 KB |
Output is correct |
2 |
Correct |
801 ms |
95604 KB |
Output is correct |
3 |
Correct |
515 ms |
98608 KB |
Output is correct |
4 |
Correct |
585 ms |
98608 KB |
Output is correct |
5 |
Correct |
542 ms |
99096 KB |
Output is correct |
6 |
Correct |
603 ms |
99140 KB |
Output is correct |
7 |
Correct |
639 ms |
99184 KB |
Output is correct |
8 |
Correct |
812 ms |
99184 KB |
Output is correct |
9 |
Correct |
910 ms |
99184 KB |
Output is correct |
10 |
Correct |
254 ms |
99476 KB |
Output is correct |