Smaller elements in right using stack
function next_smaller_right(arr)
{
var v = [];
var s = [];
for(var i = arr.length - 1; i >= 0; i--)
{
if(s.length == 0)
{
v.push(-1);
}
else if(s.length > 0 && s[s.length - 1] < arr[i])
{
v.push(s[s.length - 1]);
}
else if(s.length > 0 && s[s.length - 1] >= arr[i])
{
while(s.length > 0 && s[s.length - 1] >= arr[i])
{
s.pop();
}
if(s.length == 0)
{
v.push(-1);
}
else
{
v.push(s[s.length - 1]);
}
}
s.push(arr[i]);
}
v.reverse();
return v;
}