제출 #673470

#제출 시각아이디문제언어결과실행 시간메모리
673470Do_you_copy크레이피쉬 글쓰는 기계 (IOI12_scrivener)C++17
5 / 100
340 ms60764 KiB
//Then #include <bits/stdc++.h> #define pb push_back #define fi first #define se second #define faster ios_base::sync_with_stdio(0); cin.tie(0); using namespace std; using ll = long long; using ld = long double; using pii = pair <int, int>; mt19937_64 Rand(chrono::steady_clock::now().time_since_epoch().count()); const int maxN = 1e6 + 10; //const int Mod = 1e9 + 7; //const int inf = int q; int pos[maxN], cnt, cnt1; int depth[maxN]; int lift[maxN][20]; char s[maxN]; void Init(){} void TypeLetter(char c){ pos[++cnt1] = ++cnt; lift[cnt][0] = pos[cnt1 - 1]; for (int i = 1; i < 20; ++i){ lift[cnt][i] = lift[lift[cnt][i - 1]][i - 1]; } depth[cnt] = depth[pos[cnt1 - 1]] + 1; s[cnt] = c; } void UndoCommands(int x){ ++cnt1; pos[cnt1] = pos[cnt1 - x - 1]; } char GetLetter(int x){ int u = pos[cnt1]; int k = depth[cnt] - x - 1; while (k){ int t = __builtin_ctz(k); u = lift[u][t]; k -= 1 << t; } return s[u]; }
#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...