Submission #1264213

#TimeUsernameProblemLanguageResultExecution timeMemory
1264213DeltaStruct크레이피쉬 글쓰는 기계 (IOI12_scrivener)C++20
34 / 100
1029 ms112512 KiB
#include <bits/stdc++.h>
using namespace std;

vector S(1,vector<int>(20,0)); vector<char> C(1,'@');

void Init(){}
void TypeLetter(char c){
  S.emplace_back(20,S.size()-1);
  while(C[S.back()[0]]=='_') S.back()[0] = S[S.back()[0]][0];
  for (int i(1);i < 20;++i) S.back()[i] = S[S.back()[i-1]][i-1];
  C.emplace_back(c);
}
void UndoCommands(int x){
  S.emplace_back(20,S.size()-1-x);
  while(C[S.back()[0]]=='_') S.back()[0] = S[S.back()[0]][0];
  for (int i(1);i < 20;++i) S.back()[i] = S[S.back()[i-1]][i-1];
  C.emplace_back('_');
}
char GetLetter(int x){
  int n = 0,m = S.size()-1; for (int i(19);i > -1;--i) if (C[S[m][i]]!='@') m = S[m][i],n |= 1<<i;
  m = S.size()-1; for (int i(0);i < 20;++i) if (((n-x)>>i)&1) m = S[m][i];
  return C[m];
}
#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...