#include <bits/stdc++.h>
#define LOG 22
#define MAX 1000010
using namespace std;
class pilha
{
public:
void add(char s)
{
curInd++;
curNode++;
v[curNode] = s;
version[curInd] = curNode;
dp[curNode][0] = version[curInd - 1];
prof[curNode] = prof[dp[curNode][0]] + 1;
for(int k = 1 ; k < LOG ; k++)
dp[curNode][k]= dp[dp[curNode][k - 1]][k - 1];
}
void back(int k)
{
curInd++;
version[curInd] = version[curInd - k - 1];
}
char query(int k)
{
int d = prof[curNode] - k;
int cur = curNode;
for(int g = 0 ; g < LOG ; g++)
if(d & (1 << g))
cur = dp[cur][g];
return v[cur];
}
private:
int curInd;
int curNode;
int prof[MAX];
int dp[MAX][LOG];
int version[MAX];
char v[MAX];
};
pilha p;
void Init() { }
void TypeLetter(char L) { p.add( L ); }
void UndoCommands(int U) { p.back( U + 1 ); }
char GetLetter(int P) { return p.query( P ); }
/*int q;
int n1, n2;
int main()
{
scanf("%d",&q);
Init();
for(int g = 0 ; g < q ; g++)
{
scanf("%d %d",&n1,&n2);
if(n1 == 1) TypeLetter(n2 + 'a');
if(n1 == 2) UndoCommands(n2);
if(n1 == 3) printf("%c\n",GetLetter(n2));
}
}*/
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
2 ms |
384 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
2 ms |
384 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
2 ms |
512 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
445 ms |
59860 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
520 ms |
52344 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |