제출 #124833

#제출 시각아이디문제언어결과실행 시간메모리
124833nxteru크레이피쉬 글쓰는 기계 (IOI12_scrivener)C++14
100 / 100
556 ms138232 KiB
#include <bits/stdc++.h>
using namespace std;
int le[1000005],n,k,ch[27][1000005],par[20][1000005],dp[1000005];
char re[1000005];
void Init(void){};
void TypeLetter(char c){
	int v=le[n],x=c-'a';
	if(ch[x][v]==0){
		k++;
		ch[x][v]=k;
		re[k]=c;
		par[0][k]=v;
		dp[k]=dp[v]+1;
		for(int i=0;i<19;i++)par[i+1][k]=par[i][par[i][k]];
	}
	v=ch[x][v];
	n++;
	le[n]=v;
}
void UndoCommands(int x){
	le[n+1]=le[n-x];
	n++;
}
char GetLetter(int x){
	x++;
	int v=le[n];
	for(int i=0;i<20;i++)if((dp[v]-x)>>i&1)v=par[i][v];
	return re[v];
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...