Submission #785282

#TimeUsernameProblemLanguageResultExecution timeMemory
785282KLPPStone Arranging 2 (JOI23_ho_t1)C++14
100 / 100
138 ms15960 KiB
#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
 
using namespace std;
using namespace __gnu_pbds;
typedef long long int lld;
typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update> ordered_set;
#define rep(i,a,b) for(int i=a;i<b;i++)
#define trav(a,v) for(auto a:v)

void solve(){
	int n;
	cin>>n;
	vector<pair<int,int> > V;
	set<int> S;
	rep(i,0,n){
		int x;
		cin>>x;
		
		if(V.size()==0){
			V.push_back({x,i});
			S.insert(x);
		}else{
			while(S.find(x)!=S.end()){
				S.erase(V[V.size()-1].first);
				V.pop_back();
			}
			V.push_back({x,i});
			S.insert(x);
		}
	}
	vector<int> ans(n,-1);
	int last=-1;
	rep(i,0,(int)V.size()){
		rep(j,last+1,V[i].second+1){
			ans[j]=V[i].first;
		}
		last=V[i].second;
	}
	trav(a,ans)cout<<a<<"\n";
}

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	int tt=1;
	//cin>>tt;
	while(tt--){
		solve();
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...