#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 高晓飞