Submission #911860

#TimeUsernameProblemLanguageResultExecution timeMemory
911860Faisal_Saqib크레이피쉬 글쓰는 기계 (IOI12_scrivener)C++17
100 / 100
439 ms112464 KiB
#include <iostream>
using namespace std;
const int MAXT=2e6+1;
const int LG=27;
int tm=1,par[MAXT][LG],len[MAXT],ct;
char cp[MAXT];
void Init()
{
}
void TypeLetter(char L)
{
	cp[tm]=L;
	len[tm]=len[tm-1]+1;
	par[tm][0]=tm-1;
	for(int j=1;j<LG;j++)
		par[tm][j]=par[par[tm][j-1]][j-1];
	tm++;
}
void UndoCommands(int U)
{
	len[tm]=len[tm-U-1];
	par[tm][0]=tm-U-1;
	for(int j=0;(j+1)<LG;j++)
		par[tm][j+1]=par[tm-U-1][j];
	tm++;
}
char GetLetter(int P)
{
	ct=tm-1;
	for(int j=LG-1;j>=0;j--)
		if(len[par[ct][j]]>P)
			ct=par[ct][j];
	return cp[ct];
}
#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...