제출 #883251

#제출 시각아이디문제언어결과실행 시간메모리
883251JakobZorzCrayfish scrivener (IOI12_scrivener)C++14
34 / 100
1080 ms144784 KiB
#include<iostream>
using namespace std;

struct Trie{
    Trie*ch[26],*par;
    int depth;
    char c;
    Trie(){
        for(int i=0;i<26;i++)
            ch[i]=nullptr;
        par=nullptr;
        depth=0;
    }
};

int curr;
Trie*root;
Trie*strs[1000000];

void Init(){
    root=new Trie;
    strs[0]=root;
}

void TypeLetter(char L){
    curr++;
    strs[curr]=strs[curr-1];
    int l=L-'a';
    if(strs[curr]->ch[l]==nullptr){
        strs[curr]->ch[l]=new Trie;
        strs[curr]->ch[l]->depth=strs[curr]->depth+1;
        strs[curr]->ch[l]->par=strs[curr];
        strs[curr]->ch[l]->c=L;
    }
    strs[curr]=strs[curr]->ch[l];
}

void UndoCommands(int U){
    curr++;
    strs[curr]=strs[curr-U-1];
}

char GetLetter(int P){
    Trie*ct=strs[curr];
    while(ct->depth>P+1)
        ct=ct->par;
    return ct->c;
}
#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...