Submission #1175001

#TimeUsernameProblemLanguageResultExecution timeMemory
1175001AlgorithmWarriorStone Arranging 2 (JOI23_ho_t1)C++20
100 / 100
161 ms15008 KiB
#include <bits/stdc++.h>

using namespace std;

int const MAX=2e5+5;
struct posval{
    int pos,val;
};
int n;
int v[MAX];
int ans[MAX];
set<int>util;

void read(){
    cin>>n;
    int i;
    for(i=1;i<=n;++i)
        cin>>v[i];
}

void solve(){
    stack<posval>stv;
    int i;
    for(i=1;i<=n;++i)
        if(util.find(v[i])!=util.end()){
            while(stv.top().val!=v[i]){
                util.erase(stv.top().val);
                stv.pop();
            }
        }
        else{
            util.insert(v[i]);
            stv.push({i,v[i]});
        }
    int last=n+1;
    while(!stv.empty()){
        auto [pos,val]=stv.top();
        stv.pop();
        for(i=pos;i<last;++i)
            ans[i]=val;
        last=pos;
    }
}

void write(){
    int i;
    for(i=1;i<=n;++i)
        cout<<ans[i]<<'\n';
}

int main()
{
    read();
    solve();
    write();
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...