# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1264212 | DeltaStruct | Tropical Garden (IOI11_garden) | C++20 | 0 ms | 0 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];
}