제출 #774764

#제출 시각아이디문제언어결과실행 시간메모리
774764vjudge1Stone Arranging 2 (JOI23_ho_t1)C++17
100 / 100
576 ms34404 KiB
#include<bits/stdc++.h>

#define sz(a) (int)a.size()
#define MaxN 200005

using namespace std;

int n, a[MaxN];
map<int, vector<int>> pos;
map<int, bool> val;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);


    cin >> n;
    for(int i = 1; i <= n; ++i) cin >> a[i];


    for(int i = 1; i <= n; ++i) pos[a[i]].push_back(i);


    for(int i = 1; i <= n; ++i) {
        if (val.count(a[i]) == 0) {
            reverse(pos[a[i]].begin(), pos[a[i]].end());
            val[a[i]] = 1;
        }
    }


    int p = 1;
    while(p < n) { // a[n] = a[n]
        int nxt = -1;
        while(sz(pos[a[p]]) > 0) {
            nxt = pos[a[p]][sz(pos[a[p]])-1];
            if (p >= nxt) {
                pos[a[p]].pop_back();
                nxt = -1;
            }
            else {
                break;
            }
        }
        if (nxt != -1) {
            for(int i = p+1; i <= nxt; ++i) a[i] = a[p];
            p = nxt;
        }
        else {
            ++p;
        }
    }


    for(int i = 1; i <= n; ++i) cout << a[i] << "\n";


    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...