#include <bits/stdc++.h>
using namespace std;
int n;
int a[1000004];
int ret[1000004];
stack<int> s;
int main(){
cin >> n;
memset(ret, -1, sizeof(ret));
for(int i = 0; i < n; i++){
cin >> a[i];
while(s.size() && a[s.top()] < a[i]){
ret[s.top()] = a[i];
s.pop();
}
s.push(i);
}
for(int i = 0; i < n; i++)cout << ret[i] << " ";
}
stack이라는게 믿기지가 않았다.
힌트를 좀 보고 나서야 스택이 이렇게도 쓰일 수 있겠구나 생각했다.
쉬운데 어렵고 난이도도 이렇게까지 높지 않아도 될듯 하면서 그렇기도 한거 같은 문제였다.