#include <iostream>
#include <stack>
#include <sstream>
using namespace std;
int main() {
int N;
int* arr;
int* NGF;
cin >> N;
arr = new int[N+1];
int cntarr[1000001] = {0,};
NGF = new int[N+1];
for(int i = 1 ; i <= N ; i++) NGF[i] = -1;
for(int i = 1; i <= N; i++)
{
int input;
cin >> input;
arr[i] = input;
cntarr[input] += 1;
}
stack <int> s;
for(int i = 1; i <= N; i++)
{
while(!s.empty() && cntarr[arr[s.top()]] < cntarr[arr[i]] )
{
NGF[s.top()] = arr[i];
s.pop();
}
s.push(i);
//cout << "i = " << i;
//for(int i = 1 ; i <= N ; i++)
// cout << NGF[i] << " ";
// cout << endl;
}
for(int i = 1 ; i <= N ; i++)
cout << NGF[i] << " ";
delete[] NGF;
delete[] arr;
return 0;
}
'프로그래밍 공부 > 백준 (C++)' 카테고리의 다른 글
[C++/백준 1918번] 후위 표기식 (0) | 2024.10.25 |
---|---|
[C++/백준 1935번] 후위 표기식 2 (0) | 2024.10.24 |
[C++/백준 17298번] 오큰수 (0) | 2024.10.24 |
[C++/백준 10799번] 쇠막대기 (0) | 2024.10.14 |
[C++ / 백준 17413번] 단어 뒤집기 2 (0) | 2024.10.14 |