이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
struct StatusTree {
vector<bool> status;
StatusTree (int size) {
status.resize(size, false);
}
bool get (int id) {
return status[id];
}
void setTrue (int l, int r) {
for (int i = l; i <= r; i ++) status[i] = true;
}
};
struct SetTree {
vector<int> answer;
SetTree (int size) {
answer.resize(size);
}
void set (int l, int r, int v) {
for (int i = l; i <= r; i ++) answer[i] = v;
}
};
using idqgr = map<int, deque<int>>;
int main () {
int N;
cin >> N;
StatusTree tree(N);
idqgr queue;
SetTree answer(N);
for (int i = 0; i < N; i ++) {
int a; cin >> a;
if (queue.find(a) == queue.end())
queue.insert({ a, {} });
deque<int> &positions = (*queue.find(a)).second;
positions.push_back(i);
while (tree.get(positions.front()))
positions.pop_front();
int left = positions.front();
tree.setTrue(left + 1, i - 1);
answer.set(left, i, a);
}
for (int u : answer.answer) cout << u << "\n";
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |