제출 #1163330

#제출 시각아이디문제언어결과실행 시간메모리
1163330HappyCapybara크레이피쉬 글쓰는 기계 (IOI12_scrivener)C++20
0 / 100
254 ms81308 KiB
#include<bits/stdc++.h>
using namespace std;

int cur;
vector<int> t;
vector<vector<int>> p;
vector<char> l;
vector<int> s;

void Init(){
  p.resize(1, vector<int>(20, 0));
  cur = 0;
  t.push_back(0);
  s.push_back(0);
}

void TypeLetter(char L) {
  l.push_back(L);
  s.push_back(s[t[cur]]+1);
  p.push_back(vector<int>(20, 0));
  p[l.size()][0] = t[cur];
  for (int i=1; i<20; i++) p[l.size()][i] = p[p[l.size()][i-1]][i-1];
  t.push_back(l.size()-1);
  cur++;
}

void UndoCommands(int U) {
  t.push_back(t[cur-U]);
  cur++;
}

char GetLetter(int P) {
  int x = s[t[cur]]-P-1;
  int ch = t[cur];
  for (int i=19; i>=0; i--){
    if ((1<<i) <= x){
      ch = p[ch][i];
      x -= (1<<i);
    }
  }
  return l[ch];
}
#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...