Submission #937541

#TimeUsernameProblemLanguageResultExecution timeMemory
937541zwezdinvStone Arranging 2 (JOI23_ho_t1)C++17
100 / 100
199 ms24660 KiB
#include <bits/stdc++.h>

int main() {
        std::cin.tie(nullptr)->sync_with_stdio(false);

        int n;
        std::cin >> n;
        std::vector<int> left(n);
        std::iota(left.begin(), left.end(), 0);
        std::set<int> st;
        std::map<int, int> pos;
        std::vector<int> a(n);
        for (int i = 0; i < n; ++i) std::cin >> a[i];
        for (int i = 0; i < n; ++i) {
                if (pos.count(a[i])) {
                        int j = pos[a[i]];
                        left[i] = left[j];
                        while (st.size() && *--st.end() >= j) {
                                pos.erase(a[*--st.end()]), st.erase(--st.end());
                        }
                }
                pos[a[i]] = i;
                st.insert(i);
        }
        for (int i = n - 1; i >= 0;) {
                int c = a[i];
                int j = left[i];
                while (i >= j) a[i--] = c;
        }
        for (int i = 0; i < n; ++i) {
                std::cout << a[i] << '\n';
        }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...