제출 #609366

#제출 시각아이디문제언어결과실행 시간메모리
609366neki크레이피쉬 글쓰는 기계 (IOI12_scrivener)C++14
100 / 100
534 ms144528 KiB
#include <bits/stdc++.h>
#define vc vector

using namespace std;

const int lg=20;

struct node{
    char c;
    node* anc[lg];
    int hei;
    node(char c_, node* par, int hei_){
        c=c_;hei=hei_;
        if(par==NULL) anc[0]=this;
        else anc[0]=par;
        for(int i=1;i<lg;++i) anc[i] = (anc[i-1]->anc)[i-1];
    }
    char getkth(int ind){
        node* ret =this;
        ind=hei-ind;
        for(int i=0;i<lg;++i){ if(ind&(1<<i)) ret=(ret->anc[i]); assert(ret!=NULL);}
        return ret->c;
    }
};

vc<node*> tpoi;
node* cur;

void Init(){
    cur = new node('.', NULL, 0);
    tpoi.push_back(cur);
}
void TypeLetter(char L){
    cur = new node(L, cur, (cur->hei) +1);
    tpoi.push_back(cur);
}
void UndoCommands(int U){
    cur = tpoi[tpoi.size()-1 - U];
    tpoi.push_back(cur);
}
char GetLetter(int P){
    return cur->getkth(P+1);
}
#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...