Submission #1220569

#TimeUsernameProblemLanguageResultExecution timeMemory
1220569Rafael_AugustoCrayfish scrivener (IOI12_scrivener)C++20
0 / 100
1 ms328 KiB
#include <bits/stdc++.h> using namespace std; //#define int long long #define pb push_back #define f first #define s second #define dbg(v) cerr << #v << " = " << v << "\n" #define fall(i, s, n) for(int i=s; i<n; i++) #define rfall(i, s, n) for(int i=s; i>=n; i--) typedef pair<int, int> pii; typedef tuple<int, int, int> trio; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); const int MAXN = 1e6 + 7; const int MAXL = 23; int sz[MAXN]; char last[MAXN]; int sparse[MAXN][MAXL], t=0; void build(){ fall(i, 1, MAXL) sparse[t][i] = sparse[sparse[t][i-1]][i-1]; } void Init() {} void TypeLetter(char L) { last[t] = L, sz[t] = sz[t-1]+1, sparse[t][0]=t-1; build(), t++; } void UndoCommands(int U) { last[t] = last[t-U-1], sz[t]=sz[t-U-1], sparse[t][0]=t-U-1; build(), t++; } char GetLetter(int P) { int x=t-1, s=sz[t-1]; rfall(i, MAXL-1, 0) if(sz[sparse[x][i]] >= P+1) s = sz[sparse[x][i]], x = sparse[x][i]; return last[x]; }
#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...