Submission #393251

#TimeUsernameProblemLanguageResultExecution timeMemory
393251HazemCrayfish scrivener (IOI12_scrivener)C++17
60 / 100
1082 ms86596 KiB
#include <bits/stdc++.h> //#include "grader.h" using namespace std; #define S second #define F first #define LL long long const int N = 1e6+1; const LL MOD = 1e9+7; const LL LINF = 1e18; const LL INF = 1e9; char s[N]; int par[21][N],len[N]; int cnt = 1; char last; void Init() {} void buildst(int x,int pr){ par[0][x] = pr; len[x] = len[pr]; int cur = pr; for(int i=1;i<=20;i++) par[i][x] = par[i-1][cur],cur = par[i-1][cur]; } void TypeLetter(char L) { buildst(cnt,cnt-1); len[cnt]++; s[cnt] = L; cnt++; } void UndoCommands(int U) { buildst(cnt,cnt-U-1); cnt++; } char GetLetter(int P) { cnt--; P++; int cur = cnt; for(int i=20;i>=0;i--) if(len[par[i][cur]]>=P)cur = par[i][cur]; cnt++; return s[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...