Submission #773004

#TimeUsernameProblemLanguageResultExecution timeMemory
773004penguin133Crayfish scrivener (IOI12_scrivener)C++17
100 / 100
689 ms90544 KiB
#include <bits/stdc++.h> using namespace std; //#define int long long #define pi pair<int, int> #define pii pair<int, pi> #define fi first #define se second #ifdef _WIN32 #define getchar_unlocked _getchar_nolock #endif mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); void Init() {} int par[21][1000005], cur, dep[1000005]; char stuf[1000005]; void TypeLetter(char L) { stuf[++cur] = L; dep[cur] = dep[cur - 1] + 1; par[0][cur] = cur - 1; for(int i = 1; i <= 20; i++)par[i][cur] = par[i-1][par[i-1][cur]]; } void UndoCommands(int U) { cur++; dep[cur] = dep[cur - U - 1]; stuf[cur] = stuf[cur - U - 1]; par[0][cur] = par[0][cur - U - 1]; for(int i = 1; i <= 20; i++)par[i][cur] = par[i-1][par[i-1][cur]]; } char GetLetter(int P) { int brr = dep[cur] - P - 1; int tmp = cur; for(int i = 20; i >= 0; i--)if(brr >> i & 1)tmp = par[i][tmp]; //cout << cur << ' ' << tmp << ' ' << dep[cur] << ' ' << '\n'; return stuf[tmp]; }
#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...