#include <bits/stdc++.h>
using namespace std;
#define pb push_back
int flog2(int x) {
return 31 - __builtin_clz(x);
}
bool ispow2(int x) {
return (x == (1 << flog2(x)));
}
struct Trie {
char c;
int len;
Trie *lptr, *rptr;
Trie(char cur = '.'): c(cur), len((cur != '.')), lptr(nullptr), rptr(nullptr) {};
};
vector<Trie*> ver;
Trie *cur, *pre;
void Init() {
ver.pb(nullptr);
}
void TypeLetter(char L) {
cur = new Trie();
pre = ver.back();
ver.pb(cur);
while (pre != nullptr) {
cur->len = pre->len + 1;
if (ispow2(pre->len)) {
cur->lptr = pre;
cur->rptr = new Trie(L);
return;
}
cur->lptr = pre->lptr;
cur->rptr = new Trie();
cur = cur->rptr;
pre = pre->rptr;
}
cur->c = L;
cur->len = 1;
}
void UndoCommands(int U) {
int ptr = (int)(ver.size()) - 1 - U;
ver.pb(ver[ptr]);
}
char GetLetter(int P) {
cur = ver.back();
while (cur->len != 1) {
if (P < cur->lptr->len) {
cur = cur->lptr;
} else {
P -= cur->lptr->len;
cur = cur->rptr;
}
}
return cur->c;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
0 ms |
212 KB |
Output is correct |
3 |
Correct |
1 ms |
212 KB |
Output is correct |
4 |
Correct |
1 ms |
212 KB |
Output is correct |
5 |
Correct |
1 ms |
212 KB |
Output is correct |
6 |
Correct |
1 ms |
212 KB |
Output is correct |
7 |
Correct |
1 ms |
212 KB |
Output is correct |
8 |
Correct |
0 ms |
212 KB |
Output is correct |
9 |
Correct |
0 ms |
212 KB |
Output is correct |
10 |
Correct |
0 ms |
304 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
212 KB |
Output is correct |
3 |
Correct |
1 ms |
212 KB |
Output is correct |
4 |
Correct |
1 ms |
212 KB |
Output is correct |
5 |
Correct |
0 ms |
212 KB |
Output is correct |
6 |
Correct |
0 ms |
212 KB |
Output is correct |
7 |
Correct |
1 ms |
212 KB |
Output is correct |
8 |
Correct |
0 ms |
212 KB |
Output is correct |
9 |
Correct |
0 ms |
308 KB |
Output is correct |
10 |
Correct |
1 ms |
212 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
596 KB |
Output is correct |
2 |
Correct |
2 ms |
596 KB |
Output is correct |
3 |
Correct |
2 ms |
596 KB |
Output is correct |
4 |
Correct |
1 ms |
724 KB |
Output is correct |
5 |
Correct |
1 ms |
596 KB |
Output is correct |
6 |
Correct |
2 ms |
852 KB |
Output is correct |
7 |
Correct |
2 ms |
852 KB |
Output is correct |
8 |
Correct |
2 ms |
852 KB |
Output is correct |
9 |
Correct |
2 ms |
852 KB |
Output is correct |
10 |
Correct |
1 ms |
596 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
312 ms |
191012 KB |
Output is correct |
2 |
Correct |
350 ms |
213008 KB |
Output is correct |
3 |
Correct |
308 ms |
208580 KB |
Output is correct |
4 |
Correct |
326 ms |
183516 KB |
Output is correct |
5 |
Correct |
352 ms |
169784 KB |
Output is correct |
6 |
Correct |
344 ms |
232904 KB |
Output is correct |
7 |
Correct |
341 ms |
109976 KB |
Output is correct |
8 |
Correct |
331 ms |
173732 KB |
Output is correct |
9 |
Correct |
368 ms |
234016 KB |
Output is correct |
10 |
Correct |
265 ms |
197412 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
338 ms |
159164 KB |
Output is correct |
2 |
Correct |
386 ms |
138796 KB |
Output is correct |
3 |
Correct |
341 ms |
173876 KB |
Output is correct |
4 |
Correct |
326 ms |
129188 KB |
Output is correct |
5 |
Correct |
287 ms |
173600 KB |
Output is correct |
6 |
Correct |
299 ms |
152968 KB |
Output is correct |
7 |
Correct |
306 ms |
172564 KB |
Output is correct |
8 |
Correct |
348 ms |
80312 KB |
Output is correct |
9 |
Correct |
430 ms |
150972 KB |
Output is correct |
10 |
Correct |
261 ms |
195832 KB |
Output is correct |