Submission #911756

#TimeUsernameProblemLanguageResultExecution timeMemory
911756Faisal_SaqibCrayfish scrivener (IOI12_scrivener)C++17
34 / 100
356 ms90704 KiB
#include <iostream>
using namespace std;
const int MAXT=3e6+1;
const int LG=22;
int tm=1;
int par[MAXT][LG];
int len[MAXT];
char cp[MAXT];
void Init()
{
	for(int j=0;j<1000;j++)
		cp[j]='$';
}
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)
{
	int ct=tm-1;
	for(int j=LG-1;j>=0;j--)
	{
		if(len[par[ct][j]]>P)
		{
			ct=par[ct][j];
			// P-=len[ct];
		}
	}
	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...