프로그래밍 공부/백준 (C++)
[C++/백준 17298번] 오등큰수
Rocketbabydolls
2024. 10. 24. 13:14
#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;
}