Submission #286592

#TimeUsernameProblemLanguageResultExecution timeMemory
286592amiratouCrayfish scrivener (IOI12_scrivener)C++14
34 / 100
1056 ms125432 KiB
#pragma GCC optimize("O3") #pragma GCC target("avx2") #pragma GCC optimize("unroll-loops") #include <bits/stdc++.h> using namespace std; #define pb push_back const int LOG=20,MX=(int)(1e6+7); 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) { vec[up[idx-U][0]].pb(idx+1); d[idx+1]=d[up[idx-U][0]]+1; 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]; 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...