You are on page 1of 1

#include <bits/stdc++.

h>
using namespace std;

void next_larger(vector<int> v)
{

stack<int> st;

vector<int> ans;

for(int i = v.size()-1;i>=0;--i){
if(st.empty()){ans.push_back(-1);
st.push(v[i]);
}
else{
if(st.top()>v[i]){
ans.push_back(st.top());
st.push(v[i]);
}
else{
while(!st.empty() && st.top()<v[i]){st.pop();}
if(!st.empty()){
ans.push_back(st.top());

}
else{
ans.push_back(-1);

}
st.push(v[i]);
}
}
}
for(auto vals: ans){
cout<<vals<<" ";
}
cout<<"\n";

int main()
{
int n;
cin>>n;
vector<int> v;

for(int i = 0;i<n;++i){
int x;
cin>>x;
v.push_back(x);
}

next_larger(v);

return 0;
}

You might also like