using System.Collections.Generic;
public static void Main()
int[] arr = {20, 30, 10, 5, 15};
PrintPreviousGreaterElementNaive(arr);
PrintPreviousGreaterElement(arr);
public static void PrintPreviousGreaterElementNaive(int[] arr)
Stack<int> stack = new Stack<int>();
for (int i = 0; i < arr.Length; i++)
for (j = i - 1; j >= 0; j--)
Console.Write(arr[j] + " ");
public static void PrintPreviousGreaterElement(int[] arr)
Stack<int> stack = new Stack<int>();
for(int i=0;i<arr.Length;i++){
while(stack.Count>0 && arr[i]>=stack.Peek()){
int result=stack.Count==0?-1:stack.Peek();
Console.Write($"{result} ");