제출 #538423

#제출 시각아이디문제언어결과실행 시간메모리
538423groshi크레이피쉬 글쓰는 기계 (IOI12_scrivener)C++17
100 / 100
555 ms209676 KiB
#include<iostream> #include<string> using namespace std; int gdzie=1; struct wi{ int dokad[30]; int skok[21]; int wys=0; }*w; int nowy=2; int gdzie_w_czasie[1000100]; char litera[1000100]; void dodaj_pot(int ustal) { for(int i=1;i<=20;i++) w[ustal].skok[i]=w[w[ustal].skok[i-1]].skok[i-1]; } int czas=1; void Init() { w=new wi[1000003]; } void TypeLetter(char dodaj) { if(w[gdzie].dokad[dodaj-'a']==0) { litera[nowy]=dodaj; w[gdzie].dokad[dodaj-'a']=nowy; w[nowy].skok[0]=gdzie; w[nowy].wys=w[gdzie].wys+1; dodaj_pot(nowy); gdzie=nowy; nowy++; } else gdzie=w[gdzie].dokad[dodaj-'a']; gdzie_w_czasie[czas]=gdzie; czas++; } void UndoCommands(int cof) { gdzie=gdzie_w_czasie[czas-cof-1]; gdzie_w_czasie[czas]=gdzie; czas++; } char GetLetter(int ile) { int pot=0; int gora=gdzie; ile=w[gdzie].wys-ile-1; while(ile>0) { if(ile%2==1) gora=w[gora].skok[pot]; ile/=2; pot++; } return litera[gora]; }
#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...