이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6;
int L[21 * N], R[21 * N], t;
char s[21 * N];
void upd(int &v, int l, int r, const int &x, const char &z) {
++t;
L[t] = L[v];
R[t] = R[v];
v = t;
if (l == r) {
s[v] = z;
return;
}
int m = l + r >> 1;
if (x <= m) upd(L[v], l, m, x, z);
else upd(R[v], m + 1, r, x, z);
s[v] = s[L[v]] + s[R[v]];
}
char qry(int v, int l, int r, const int &x) {
if (l == r) return s[v];
int m = l + r >> 1;
return x <= m ? qry(L[v], l, m, x) : qry(R[v], m + 1, r, x);
}
vector<pair<int, int>> st;
void Init() {
st.push_back({0, 0});
}
void TypeLetter(char L) {
st.push_back(st.back());
upd(st.back().first, 0, N - 1, st.back().second++, L);
}
void UndoCommands(int U) {
st.push_back(st[st.size() - U - 1]);
}
char GetLetter(int P) {
return qry(st.back().first, 0, N - 1, P);
}
컴파일 시 표준 에러 (stderr) 메시지
scrivener.cpp: In function 'void upd(int&, int, int, const int&, const char&)':
scrivener.cpp:18:15: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
18 | int m = l + r >> 1;
| ~~^~~
scrivener.cpp: In function 'char qry(int, int, int, const int&)':
scrivener.cpp:26:15: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
26 | int m = l + r >> 1;
| ~~^~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |