using System.Collections.Generic;
public static void Main()
var n = new[] { 9, 3, 0, 1,5 };
int[] result=FindNearesSmallest(n);
Console.WriteLine("Orginal array :"+string.Join("",n));
Console.WriteLine("Result array :"+string.Join("",result));
int[] FindNearesSmallest(int[] input)
Stack<int> stack=new Stack<int>();
while(stack.Count>0&& input[stack.Peek()]>=input[i]){
result[i]=(stack.Count==0)?-1:input[stack.Peek()];