#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
#define all(v) v.begin(), v.end()
//#pragma GCC optimize("Ofast")
//#pragma GCC target("avx2")
struct node {
char c;
array<node*, 22> par;
int len;
};
typedef node* pnode;
pnode cur;
vector<pnode> undo;
void Init() {
cur = new node();
cur->len = -1;
undo.push_back(cur);
}
void TypeLetter(char L) {
pnode tmp = new node();
tmp->par[0] = cur;
for (int i = 1; i < 22; i++) {
if(tmp->par[i - 1] == NULL) break;
tmp->par[i] = tmp->par[i - 1]->par[i - 1];
}
tmp->c = L;
tmp->len = cur->len + 1;
cur = tmp;
undo.push_back(cur);
}
void UndoCommands(int U) {
pnode tmp = undo[undo.size() - U - 1];
cur = tmp;
undo.push_back(cur);
}
char GetLetter(int P) {
pnode tmp = cur;
int x = tmp->len - P;
for (int i = 0; i < 22; i++) {
if(x & (1 << i)){
tmp = tmp->par[i];
}
}
return tmp->c;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
344 KB |
Output is correct |
2 |
Correct |
1 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
0 ms |
344 KB |
Output is correct |
5 |
Correct |
1 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 |
600 KB |
Output is correct |
9 |
Correct |
0 ms |
348 KB |
Output is correct |
10 |
Correct |
1 ms |
348 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
1 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 |
0 ms |
348 KB |
Output is correct |
8 |
Correct |
0 ms |
348 KB |
Output is correct |
9 |
Correct |
0 ms |
348 KB |
Output is correct |
10 |
Correct |
1 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 |
2 ms |
860 KB |
Output is correct |
5 |
Correct |
2 ms |
856 KB |
Output is correct |
6 |
Correct |
2 ms |
1116 KB |
Output is correct |
7 |
Correct |
2 ms |
1116 KB |
Output is correct |
8 |
Correct |
2 ms |
860 KB |
Output is correct |
9 |
Correct |
1 ms |
860 KB |
Output is correct |
10 |
Correct |
1 ms |
604 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
444 ms |
128776 KB |
Output is correct |
2 |
Correct |
492 ms |
141268 KB |
Output is correct |
3 |
Correct |
344 ms |
138952 KB |
Output is correct |
4 |
Correct |
306 ms |
112304 KB |
Output is correct |
5 |
Correct |
436 ms |
121804 KB |
Output is correct |
6 |
Correct |
407 ms |
153268 KB |
Output is correct |
7 |
Correct |
330 ms |
76800 KB |
Output is correct |
8 |
Correct |
370 ms |
114420 KB |
Output is correct |
9 |
Correct |
525 ms |
156228 KB |
Output is correct |
10 |
Correct |
207 ms |
114608 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
458 ms |
110876 KB |
Output is correct |
2 |
Correct |
480 ms |
98224 KB |
Output is correct |
3 |
Correct |
305 ms |
108512 KB |
Output is correct |
4 |
Correct |
284 ms |
83376 KB |
Output is correct |
5 |
Correct |
342 ms |
118120 KB |
Output is correct |
6 |
Correct |
347 ms |
110644 KB |
Output is correct |
7 |
Correct |
330 ms |
117168 KB |
Output is correct |
8 |
Correct |
428 ms |
59308 KB |
Output is correct |
9 |
Correct |
523 ms |
102320 KB |
Output is correct |
10 |
Correct |
205 ms |
113580 KB |
Output is correct |