#include <bits/stdc++.h>
using namespace std;
const int N = (int) 1e6 + 5;
#define mid (bas + son) / 2
int cnt,n = 1000000,c[N];
class tree{ public:
int x;
tree *l,*r;
};
typedef tree* pTree;
void build(pTree root,int bas,int son) {
if (bas == son) {
root -> x = 0;
return;
}
root -> l = new tree;
root -> r = new tree;
build(root -> l,bas,mid);
build(root -> r,mid + 1,son);
root -> x = root -> l -> x + root ->r ->x;
}
pTree update(pTree root,int bas,int son,int wh,int val) {
pTree t = new tree;
if (bas == son && bas == wh) {
t -> x = val;
return t;
}
if (wh <= mid) {
t -> l = update(root -> l,bas,mid,wh,val);
t -> r = root -> r;
}
else {
t -> l = root -> l;
t -> r = update(root -> r,mid + 1,son,wh,val);
}
t -> x = t -> l -> x + t -> r -> x;
return t;
}
int query(pTree root,int bas,int son,int wh) {
if (bas > wh || son < wh) return 0;
if (bas == wh && son == wh) return root -> x;
return query(root -> l,bas,mid,wh) + query(root -> r,mid + 1,son,wh);
}
pTree T[N];
char last;
void Init() {
T[0] = new tree;
build(T[0],1,n);
}
void TypeLetter(char L) {
T[cnt + 1] = update(T[cnt],1,n,c[cnt] + 1,(int) L);
cnt++;
c[cnt] = c[cnt - 1] + 1;
}
void UndoCommands(int U) {
T[cnt + 1] = T[cnt - U];
c[cnt + 1] = c[cnt - U];
cnt++;
}
char GetLetter(int P) {
return (char) query(T[cnt],1,n,P + 1);
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
108 ms |
62996 KB |
Output is correct |
2 |
Correct |
106 ms |
63088 KB |
Output is correct |
3 |
Correct |
109 ms |
63172 KB |
Output is correct |
4 |
Correct |
118 ms |
63332 KB |
Output is correct |
5 |
Correct |
133 ms |
63332 KB |
Output is correct |
6 |
Correct |
102 ms |
63332 KB |
Output is correct |
7 |
Correct |
109 ms |
63332 KB |
Output is correct |
8 |
Correct |
103 ms |
63372 KB |
Output is correct |
9 |
Correct |
101 ms |
63372 KB |
Output is correct |
10 |
Correct |
131 ms |
63372 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
108 ms |
63428 KB |
Output is correct |
2 |
Correct |
105 ms |
63500 KB |
Output is correct |
3 |
Correct |
108 ms |
63560 KB |
Output is correct |
4 |
Correct |
103 ms |
63560 KB |
Output is correct |
5 |
Correct |
110 ms |
63580 KB |
Output is correct |
6 |
Correct |
105 ms |
63580 KB |
Output is correct |
7 |
Correct |
103 ms |
63708 KB |
Output is correct |
8 |
Correct |
104 ms |
63708 KB |
Output is correct |
9 |
Correct |
101 ms |
63708 KB |
Output is correct |
10 |
Correct |
101 ms |
63708 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
109 ms |
64436 KB |
Output is correct |
2 |
Correct |
112 ms |
64592 KB |
Output is correct |
3 |
Correct |
120 ms |
64832 KB |
Output is correct |
4 |
Correct |
117 ms |
65688 KB |
Output is correct |
5 |
Correct |
107 ms |
65688 KB |
Output is correct |
6 |
Correct |
106 ms |
66136 KB |
Output is correct |
7 |
Correct |
110 ms |
66160 KB |
Output is correct |
8 |
Correct |
108 ms |
66160 KB |
Output is correct |
9 |
Correct |
136 ms |
66160 KB |
Output is correct |
10 |
Correct |
103 ms |
66160 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
1061 ms |
262144 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
1033 ms |
262144 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |