#include <bits/stdc++.h>
#define lp(i,a,b) for(int i = a; i <b;i++)
#define ff first
#define ss second
#define pb push_back
#define mk make_pair
#define sz size()
#define debug printf
#define ll long long
#define pii pair<int,int>
const int MAXN = 1e6+10;
using namespace std ;
struct Seg
{
vector<int> e , d , soma ;
int m(int l, int r) { return (l+r)>>1 ; }
int create()
{
e.pb(0) ;
d.pb(0) ;
soma.pb(0) ;
return (int)(e.sz) - 1 ;
}
int create_and_copy(int x)
{
e.pb(e[x]) ;
d.pb(d[x]) ;
soma.pb(soma[x]) ;
return (int)(e.sz) - 1 ;
}
int upd(int pos,int l, int r, int idx)
{
int brandNew = create_and_copy(pos) ;
if( l == r )
{
soma[brandNew] = 1 ;
return brandNew ;
}
int aux ;
if( idx <= m(l,r) )
{
aux = upd( e[brandNew] , l , m(l,r) , idx ) ;
e[brandNew] = aux ;
}
else
{
aux = upd(d[brandNew] ,m(l,r)+1, r, idx ) ;
d[brandNew] = aux ;
}
soma[brandNew] = soma[ e[brandNew] ] + soma[ d[brandNew] ] ;
return brandNew ;
}
int binarySearch(int pos, int l, int r, int tot )
{
if( l == r ) return l ;
if( soma[e[pos]] >= tot ) return binarySearch(e[pos],l,m(l,r),tot) ;
return binarySearch(d[pos],m(l,r)+1, r, tot - soma[e[pos]]) ;
}
void init()
{
e.clear() ;
d.clear() ;
soma.clear() ;
}
} ;
int curId ;
int version[MAXN] ;
Seg seg ;
char letter[MAXN] ;
void Init()
{
seg.init() ;
version[0] = 0 ;
seg.create() ;
curId = 0;
}
void TypeLetter(char L) {
curId ++ ;
version[curId] = seg.upd( version[curId-1] , 1 , MAXN , curId ) ;
letter[curId] = L ;
}
void UndoCommands(int U) {
curId ++ ;
version[curId] = version[curId - U-1 ] ;
}
char GetLetter(int P) {
return letter[ seg.binarySearch(version[curId],1,MAXN,P+1) ] ;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
376 KB |
Output is correct |
3 |
Correct |
2 ms |
376 KB |
Output is correct |
4 |
Correct |
2 ms |
376 KB |
Output is correct |
5 |
Correct |
2 ms |
376 KB |
Output is correct |
6 |
Correct |
2 ms |
376 KB |
Output is correct |
7 |
Correct |
2 ms |
376 KB |
Output is correct |
8 |
Correct |
2 ms |
376 KB |
Output is correct |
9 |
Correct |
2 ms |
380 KB |
Output is correct |
10 |
Correct |
2 ms |
376 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
376 KB |
Output is correct |
3 |
Correct |
2 ms |
376 KB |
Output is correct |
4 |
Correct |
2 ms |
376 KB |
Output is correct |
5 |
Correct |
2 ms |
376 KB |
Output is correct |
6 |
Correct |
2 ms |
376 KB |
Output is correct |
7 |
Correct |
2 ms |
376 KB |
Output is correct |
8 |
Correct |
2 ms |
376 KB |
Output is correct |
9 |
Correct |
2 ms |
376 KB |
Output is correct |
10 |
Correct |
2 ms |
504 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
888 KB |
Output is correct |
2 |
Correct |
4 ms |
888 KB |
Output is correct |
3 |
Correct |
4 ms |
1272 KB |
Output is correct |
4 |
Correct |
5 ms |
1268 KB |
Output is correct |
5 |
Correct |
4 ms |
1144 KB |
Output is correct |
6 |
Correct |
5 ms |
1524 KB |
Output is correct |
7 |
Correct |
5 ms |
1524 KB |
Output is correct |
8 |
Correct |
5 ms |
1144 KB |
Output is correct |
9 |
Correct |
5 ms |
1268 KB |
Output is correct |
10 |
Correct |
4 ms |
888 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
689 ms |
150268 KB |
Output is correct |
2 |
Correct |
674 ms |
165668 KB |
Output is correct |
3 |
Correct |
689 ms |
162932 KB |
Output is correct |
4 |
Correct |
672 ms |
140168 KB |
Output is correct |
5 |
Correct |
813 ms |
141908 KB |
Output is correct |
6 |
Correct |
721 ms |
179356 KB |
Output is correct |
7 |
Correct |
653 ms |
87532 KB |
Output is correct |
8 |
Correct |
701 ms |
139384 KB |
Output is correct |
9 |
Correct |
823 ms |
183352 KB |
Output is correct |
10 |
Correct |
563 ms |
139068 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
802 ms |
138656 KB |
Output is correct |
2 |
Correct |
924 ms |
140404 KB |
Output is correct |
3 |
Correct |
700 ms |
139848 KB |
Output is correct |
4 |
Correct |
637 ms |
94328 KB |
Output is correct |
5 |
Correct |
657 ms |
138840 KB |
Output is correct |
6 |
Correct |
642 ms |
139452 KB |
Output is correct |
7 |
Correct |
686 ms |
139048 KB |
Output is correct |
8 |
Correct |
822 ms |
75320 KB |
Output is correct |
9 |
Correct |
941 ms |
140924 KB |
Output is correct |
10 |
Correct |
559 ms |
139064 KB |
Output is correct |