제출 #706682

#제출 시각아이디문제언어결과실행 시간메모리
706682starplat크레이피쉬 글쓰는 기계 (IOI12_scrivener)C++14
100 / 100
700 ms97420 KiB
#include <bits/stdc++.h>
using namespace std;
void Init();
void TypeLetter(char L);
void UndoCommands(int U);
char GetLetter(int P);
int pnt,cmd[1000005],dp[1000005];
int lift[25][1000005],ans[1000005];
void Init(){
	pnt=0;
	for (int i=0;i<=1000000;i++) cmd[i]=i;
}
void TypeLetter(char L){
	int par=cmd[pnt];
	ans[++pnt]=L;
	lift[0][pnt]=par;
	for (int i=1;i<=20;i++){
		lift[i][pnt]=lift[i-1][lift[i-1][pnt]];
	}
	dp[pnt]=dp[par]+1;
}
void UndoCommands(int U){
	++pnt;
	cmd[pnt]=cmd[pnt-U-1];
}
char GetLetter(int P){
	int x=cmd[pnt];
	for (int i=20;i>=0;i--){
		if (dp[lift[i][x]]>=P+1){
			x=lift[i][x];
		}
	}
	return ans[x];
}
/*int main(){
	Init();
	while (true){
		char type,c; cin>>type>>c;
		if (type=='A') TypeLetter(c);
		else if (type=='B') UndoCommands(c-'0');
		else cout<<GetLetter(c-'0')<<"\n";
	}
}*/
#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...