오큰수는 자신보다 오른쪽에 위치하면서 자신보다 큰 수 중에 가장 왼쪽에 있는 수를 의미한다.
오큰수를 찾기 위해서는 자신의 값과 앞으로 나올 수들을 비교해야하는데 이는 스택을 이용하면 된다.
#include <bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
vector<int> V(n), ans(n, -1);
stack <int> S;
for (int i = 0; i < n; ++i)
cin >> V[i];
for (int i = 0; i < n; ++i)
{
while (!S.empty() && V[S.top()] < V[i])
{
ans[S.top()] = V[i];
S.pop();
}
S.push(i);
}
for (int i = 0; i < n; ++i)
cout << ans[i] << ' ';
}