Submission #1286754

#TimeUsernameProblemLanguageResultExecution timeMemory
1286754Jawad_Akbar_JJStone Arranging 2 (JOI23_ho_t1)C++20
100 / 100
199 ms41440 KiB
#include <iostream>
#include <vector>
#include <map>

using namespace std;
const int N = 1<<18;
int a[N], prv[N];
map<int, vector<int>> occ;

void print(int n){
	if (n == 0)
		return;
	print(prv[n]);
	for (int j=prv[n];j<n;j++)
		cout<<a[n]<<' ';
}

int main(){
	ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
	int n;
	cin>>n;

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

		if (occ[a[i]].size() == 0)
			prv[i] = i-1;
		else{
			for (int j=i-1;j > occ[a[i]].back();j = prv[j])
				occ[a[j]].pop_back();

			prv[i] = prv[occ[a[i]].back()];
			occ[a[i]].pop_back();
		}
		occ[a[i]].push_back(i);
	}
	print(n);
	cout<<'\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...