Submission #286606

#TimeUsernameProblemLanguageResultExecution timeMemory
286606amiratouCrayfish scrivener (IOI12_scrivener)C++14
34 / 100
1054 ms124664 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back const int LOG=20,MX=(int)(1e6+1); int up[MX][LOG],d[MX],idx; char car[MX]; vector<int> vec[MX]; void Init() { } void TypeLetter(char L) { vec[idx].pb(idx+1); d[idx+1]=d[idx]+1; up[idx+1][0]=idx; for (int i = 1; i < LOG; ++i) up[idx+1][i]=up[up[idx+1][i-1]][i-1]; car[idx+1]=L; idx++; } void UndoCommands(int U) { d[idx+1]=d[idx-U]; up[idx+1][0]=up[idx-U][0]; for (int i = 1; i < LOG; ++i) up[idx+1][i]=up[up[idx+1][i-1]][i-1]; if(idx!=U){ vec[up[idx-U][0]].pb(idx+1); car[idx+1]=car[idx-U]; } idx++; } char GetLetter(int P) { int k=d[idx]-1-P,a=idx; for (int i = 0; i < LOG; ++i) if((k>>i)&1)a=up[a][i]; return car[a]; }
#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...