제출 #7488

#제출 시각아이디문제언어결과실행 시간메모리
7488Namnamseo크레이피쉬 글쓰는 기계 (IOI12_scrivener)C++98
100 / 100
508 ms91900 KiB
#include <cstdio>

const int M=1000010;

char letter[M];    /// access by state
int depth[M];      /// access by state
int parent[M][21]; /// access by state
int state[M];      /// access by command

int coms, stats;

void Init(){
}

void TypeLetter(char x){
    coms++; stats++;
     state[coms ]=stats;
    letter[stats]=x;
    int myp = state[coms-1];
    parent[stats][0]=myp;
    depth[stats]=depth[myp]+1;
    int i;
    for(i=1;i<=20;i++){
        parent[stats][i]=parent[parent[stats][i-1]][i-1];
    }
}

void UndoCommands(int x){
    coms++;
    state[coms]=state[coms-1-x];
}

char GetLetter(int pos){
    int cur=state[coms];
    pos = depth[cur]-pos-1;
    int i;
    for(i=0;i<=20;i++){
        if(pos&(1<<i)){
            cur = parent[cur][i];
        }
    }
    return letter[cur];
}
#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...