이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 1;
struct node {
int val;
node *left, *right;
node() : left(NULL), right(NULL) { };
node(const int &x) : val(x), left(NULL), right(NULL) { };
node(node* l, node* r) : left(l), right(r) { };
};
struct Persistent_Segment_Tree {
node *root;
Persistent_Segment_Tree() : root(NULL) { };
node* upd(node* v, int l, int r, int u, int x) {
if (l == r) return new node(x);
int m = l + r >> 1;
if (u <= m) return new node(upd(v->left, l, m, u, x), v->right);
else return new node(v->left, upd(v->right, m + 1, r, u, x));
}
int qry(node* &v, int l, int r, int u) {
if (l == r) return v->val;
int m = l + r >> 1;
if (u <= m) return qry(v->left, l, m, u);
return qry(v->right, m + 1, r, u);
}
void upd(int u, int x) {
root = upd(root, 0, N, u, x);
}
int qry(int u) {
return qry(root, 0, N, u);
}
};
vector<Persistent_Segment_Tree> st;
int cur[N];
void Init() {
st.push_back(Persistent_Segment_Tree());
}
void TypeLetter(char L) {
st.back().upd(cur[st.size() - 1]++, L - 'a');
cur[st.size()] = cur[st.size() - 1];
st.push_back(st.back());
}
void UndoCommands(int U) {
cur[st.size() - 1] = cur[st.size()] = cur[st.size() - U - 2];
st.back() = st[st.size() - U - 2];
st.push_back(st.back());
}
char GetLetter(int P) {
return 'a' + st.back().qry(P);
}
컴파일 시 표준 에러 (stderr) 메시지
scrivener.cpp: In member function 'node* Persistent_Segment_Tree::upd(node*, int, int, int, int)':
scrivener.cpp:19:19: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
19 | int m = l + r >> 1;
| ~~^~~
scrivener.cpp: In member function 'int Persistent_Segment_Tree::qry(node*&, int, int, int)':
scrivener.cpp:25:19: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
25 | 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... |