#include <bits/stdc++.h>
using namespace std;
constexpr int LG = 20, SZ = 1 << LG, NODES = SZ * (LG + 3);
int Root[SZ], Len[SZ], L[NODES], R[NODES], V[NODES], C, Pos;
void Init(int node, int s, int e){
if(s == e) return;
int m = (s + e) / 2;
L[node] = ++C; R[node] = ++C;
Init(L[node], s, m);
Init(R[node], m+1, e);
}
void Update(int prv, int now, int s, int e, int x, int v){
if(s == e){ V[now] = v; return; }
int m = (s + e) / 2;
if(x <= m){
L[now] = ++C; R[now] = R[prv];
Update(L[prv], L[now], s, m, x, v);
}
else{
L[now] = L[prv]; R[now] = ++C;
Update(R[prv], R[now], m+1, e, x, v);
}
}
char Get(int node, int s, int e, int x){
if(s == e) return V[node];
int m = (s + e) / 2;
if(x <= m) return Get(L[node], s, m, x);
else return Get(R[node], m+1, e, x);
}
void Print(int node, int s, int e, int sz){
if(s >= sz) return;
if(s == e){ cout << char(V[node]); return; }
int m = (s + e) / 2;
Print(L[node], s, m, sz);
Print(R[node], m+1, e, sz);
}
void Init(){
Root[0] = ++C;
Init(Root[0], 0, SZ-1);
}
void TypeLetter(char c){
Root[++Pos] = ++C; Len[Pos] = Len[Pos-1] + 1;
Update(Root[Pos-1], Root[Pos], 0, SZ-1, Len[Pos-1], c);
}
void UndoCommands(int k){
Root[++Pos] = ++C; Len[Pos] = Len[Pos-k-1];
L[Root[Pos]] = L[Root[Pos-k-1]];
R[Root[Pos]] = R[Root[Pos-k-1]];
}
char GetLetter(int k){
return Get(Root[Pos], 0, SZ-1, k);
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
7 ms |
24924 KB |
Output is correct |
2 |
Correct |
7 ms |
25064 KB |
Output is correct |
3 |
Correct |
7 ms |
24924 KB |
Output is correct |
4 |
Correct |
7 ms |
25072 KB |
Output is correct |
5 |
Correct |
7 ms |
25064 KB |
Output is correct |
6 |
Correct |
7 ms |
24924 KB |
Output is correct |
7 |
Correct |
7 ms |
25052 KB |
Output is correct |
8 |
Correct |
7 ms |
24924 KB |
Output is correct |
9 |
Correct |
7 ms |
24924 KB |
Output is correct |
10 |
Correct |
7 ms |
24924 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
7 ms |
25016 KB |
Output is correct |
2 |
Correct |
7 ms |
24924 KB |
Output is correct |
3 |
Correct |
7 ms |
24924 KB |
Output is correct |
4 |
Correct |
8 ms |
25048 KB |
Output is correct |
5 |
Correct |
7 ms |
24924 KB |
Output is correct |
6 |
Correct |
7 ms |
24924 KB |
Output is correct |
7 |
Correct |
7 ms |
25048 KB |
Output is correct |
8 |
Correct |
8 ms |
25080 KB |
Output is correct |
9 |
Correct |
7 ms |
25124 KB |
Output is correct |
10 |
Correct |
7 ms |
24924 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
7 ms |
24912 KB |
Output is correct |
2 |
Correct |
8 ms |
24924 KB |
Output is correct |
3 |
Correct |
8 ms |
24924 KB |
Output is correct |
4 |
Correct |
9 ms |
31232 KB |
Output is correct |
5 |
Correct |
8 ms |
24924 KB |
Output is correct |
6 |
Correct |
8 ms |
31236 KB |
Output is correct |
7 |
Correct |
9 ms |
31064 KB |
Output is correct |
8 |
Correct |
9 ms |
31320 KB |
Output is correct |
9 |
Correct |
9 ms |
31068 KB |
Output is correct |
10 |
Correct |
8 ms |
24924 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
213 ms |
177276 KB |
Output is correct |
2 |
Correct |
207 ms |
193700 KB |
Output is correct |
3 |
Correct |
231 ms |
191312 KB |
Output is correct |
4 |
Correct |
313 ms |
166244 KB |
Output is correct |
5 |
Correct |
261 ms |
170064 KB |
Output is correct |
6 |
Correct |
215 ms |
207736 KB |
Output is correct |
7 |
Correct |
353 ms |
122780 KB |
Output is correct |
8 |
Correct |
292 ms |
165424 KB |
Output is correct |
9 |
Correct |
249 ms |
210736 KB |
Output is correct |
10 |
Correct |
142 ms |
164268 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
288 ms |
157828 KB |
Output is correct |
2 |
Correct |
330 ms |
146204 KB |
Output is correct |
3 |
Correct |
276 ms |
158920 KB |
Output is correct |
4 |
Correct |
314 ms |
123108 KB |
Output is correct |
5 |
Correct |
202 ms |
165716 KB |
Output is correct |
6 |
Correct |
195 ms |
158288 KB |
Output is correct |
7 |
Correct |
208 ms |
166232 KB |
Output is correct |
8 |
Correct |
343 ms |
98000 KB |
Output is correct |
9 |
Correct |
371 ms |
146772 KB |
Output is correct |
10 |
Correct |
150 ms |
163540 KB |
Output is correct |