#P1494. 单调栈

单调栈

题目描述

现有一个数字序列

共有n个数字,每个数字都为整数;

从左到右分别为

a1 a2 a3 ......an

我们想找到每个数右边第一个大于它的数的位置(下标),

如果没有比这个数大的数则认为位置(下标)为0



例如这串数 1 4 2 3 5

让我们做一做

1右面第一个大于它的数是4 其位置(下标)为2

4右面第一个大于它的数是5 其位置(下标)是5

2右面第一个大于它的数是5 其位置(下标)是4

3右面第一个大于它的数是5 其位置(下标)是5

5右面没有大于它的数 所以位置(下标)是0

所以结果为 2 5 4 5 0

输入格式

第一行为n表示一共n个数;

第二行有n个数a1 a2 a3....an每个数空格隔开;

数据范围

1<=n<=3000000

1<=ai<=1000000000;

输出格式

输出每个数右边第一个大于它的位置(下标),

每个位置用空格隔开

样例

5 
2 7 4 1 3
2 0 0 5 0
7 
9 6 5 4 7 1 2
0 5 5 5 0 7 0
9 
1 2 3 4 8 4 3 2 1 

2 3 4 5 0 0 0 0 0

提示

QLU 高晓飞