given an array `nums` of integers with length `n`, for each index `i`, I am trying to find the rightmost index `j` such that `i < j` and `nums[j] >= nums[i]`. Is there an O(N) solution for this problem? I am aware of **monotonic stack** which could be used for this kind of problems, but unable to derive an algorithm.

For example, given an array A:
 `A = [9,8,1,0,1,9,4,0,4,1]`, the solution should output
 `[5,5,9,9,9,-1,8,9,-1,-1]`. Here `-1` indicates no indices satisfy the constraint.

This [link](https://stackoverflow.com/questions/69758652/how-to-find-the-rightmost-number-in-the-array-which-is-greater-or-equal-to-curre) asked the same question, and the accepted answer is only for O(NlogN). I'd like to know whether an O(N) solution is possible.

Thank you.

***Update***

Based on @Aivean's answer, here is an **O(Nlog(N))** solution in python.

```
def rightmostGreaterOrEqual(nums):
    A, n = nums, len(nums)    
    indx = [-1]*n 
    stack, stackv = [], []
    for i in range(n-1, -1, -1):
        if not stack or nums[stack[-1]] < nums[i]:
            stack.append(i) 
            stackv.append(nums[i])
        else:
            idx = bisect.bisect_left(stackv, nums[i])
            indx[i] = stack[idx]
    return indx

B = [9,8,1,0,1,9,4,0,4,1]
rightGreat = rightmostGreaterOrEqual(B)
print(B)
[9, 8, 1, 0, 1, 9, 4, 0, 4, 1]
print(rightGreat)
[5, 5, 9, 9, 9, -1, 8, 9, -1, -1]

```