C++ o(n) stack solution


#1
stack<int> st;
vector<int> res;
for(int i=0;i<A.size();i++){
    while(!st.empty()&&A[st.top()]>=A[i]){
        st.pop();
    }
    if(st.empty()){
        res.push_back(-1);
        st.push(i);
    }
        
    else if(!st.empty()&&A[st.top()]<A[i]){
        res.push_back(A[st.top()]);
        st.push(i);
    }
    
}
return res;