#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |