#include <bits/stdc++.h>
#define P(x) do {if(debug) cout << x << endl;} while(false)
#define H(x) P(#x << ": " << x)
#define FR(i, a, b) for(int i = (a); i < (b); ++i)
#define F(i, n) FR(i, 0, n)
using namespace std;
const bool debug = 0;
const int inf = 1e9;
const int N = 1000005;
int ind[N];
char parent[N];
int depth[N];
vector<vector<int> > memo;
int cur;
int root(int a){
if(a==ind[a]){
return a;
}
return ind[a] = root(ind[a]);
}
void print(){
if(debug){
cout<<"ind: ";
F(i, cur+1) cout<<ind[i]<<" ";
cout<<"\nparent: ";
F(i, cur+1) cout<<parent[i]<<" ";
cout<<"\ndepth: ";
F(i, cur+1) cout<<depth[i]<<" ";
cout<<"\nmemo: ";
F(i, cur+1) cout<<memo[i][0]<<" ";
}
}
int f(int i, int h){
if(memo[i][h]!=-1){
return memo[i][h];
}
return memo[i][h] = f(f(i,h-1) , h-1);
}
void Init() {
ind[0] = 0;
parent[0] = '\\';
depth[0] = 0;
P("I");
memo.resize(N, vector<int> (23, -1));
memo[0][0] = 0;
P("II");
cur = 0;
}
void TypeLetter(char L) {
H(L);
int n = cur+1;
ind[n] = n;
parent[n]=L;
memo[n][0] = root(cur);
depth[n] = depth[root(cur)]+1;
//cout<<endl;
cur = n;
}
void UndoCommands(int U) {
H(U);
ind[cur+1] = cur-U;
parent[cur+1] = '/';
depth[cur+1] = -1;
cur = cur+1;
}
char GetLetter(int P) {
H(P);
print();
int res = root(cur);
for(int h = 22; h>=0; h--){
if(depth[root(f(res, h))]>P) res = f(res, h);
}
return parent[res];
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
157 ms |
133368 KB |
Output is correct |
2 |
Correct |
188 ms |
133496 KB |
Output is correct |
3 |
Correct |
166 ms |
133364 KB |
Output is correct |
4 |
Correct |
159 ms |
133408 KB |
Output is correct |
5 |
Correct |
158 ms |
133368 KB |
Output is correct |
6 |
Correct |
158 ms |
133356 KB |
Output is correct |
7 |
Correct |
160 ms |
133452 KB |
Output is correct |
8 |
Correct |
159 ms |
133376 KB |
Output is correct |
9 |
Correct |
157 ms |
133468 KB |
Output is correct |
10 |
Correct |
159 ms |
133500 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
158 ms |
133364 KB |
Output is correct |
2 |
Correct |
157 ms |
133424 KB |
Output is correct |
3 |
Correct |
157 ms |
133364 KB |
Output is correct |
4 |
Correct |
157 ms |
133356 KB |
Output is correct |
5 |
Correct |
167 ms |
133440 KB |
Output is correct |
6 |
Correct |
157 ms |
133432 KB |
Output is correct |
7 |
Correct |
157 ms |
133412 KB |
Output is correct |
8 |
Correct |
156 ms |
133392 KB |
Output is correct |
9 |
Correct |
156 ms |
133444 KB |
Output is correct |
10 |
Correct |
159 ms |
133368 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
159 ms |
133404 KB |
Output is correct |
2 |
Correct |
160 ms |
133412 KB |
Output is correct |
3 |
Correct |
161 ms |
133440 KB |
Output is correct |
4 |
Correct |
160 ms |
133628 KB |
Output is correct |
5 |
Correct |
162 ms |
133568 KB |
Output is correct |
6 |
Correct |
158 ms |
133464 KB |
Output is correct |
7 |
Correct |
159 ms |
133496 KB |
Output is correct |
8 |
Correct |
160 ms |
133476 KB |
Output is correct |
9 |
Correct |
160 ms |
133556 KB |
Output is correct |
10 |
Correct |
158 ms |
133544 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
501 ms |
140112 KB |
Output is correct |
2 |
Correct |
400 ms |
141352 KB |
Output is correct |
3 |
Correct |
390 ms |
141292 KB |
Output is correct |
4 |
Correct |
433 ms |
141760 KB |
Output is correct |
5 |
Correct |
662 ms |
141076 KB |
Output is correct |
6 |
Correct |
466 ms |
142092 KB |
Output is correct |
7 |
Correct |
708 ms |
141120 KB |
Output is correct |
8 |
Correct |
518 ms |
141920 KB |
Output is correct |
9 |
Correct |
494 ms |
141516 KB |
Output is correct |
10 |
Correct |
363 ms |
142332 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
1086 ms |
139868 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |