#2311. 【模板】-单调栈-人数清点

【模板】-单调栈-人数清点

题目描述

午饭时间到了,同学们到食堂的窗口前排好了队伍,排队时间太长了,小 L 同学无聊之际想到了一个问题,如果要编一个程序,输入每个人的身高(从最后一个同学开始输入,一直到排在第 11 位的挨着打菜窗口的同学,按照这个顺序输入),计算出每个人的前面能看到几个人,应该如何解决呢?

请注意:一个同学能够看到的人是在他前面且身高严格低于他的人,并且他的视线会被在他前面第一个身高大于等于他的人挡住。也就是说无论如何也无法看到再前面的人。

输入格式

输入N+1N+1

第一行一个正整数 NN 表示同学的个数。

以下 NN 行分别表示从后到前(窗口)同学的身高。

输出格式

一行一个整数,表示所有同学能看到的人的个数和。

样例数据

6
10
3
7
4
12
2
5

样例解释:

一共6位同学:

身高 10 3 7 4 12 2
能看到的人数 3 0 1 0 1 0

能看到的人数总和为:3+1+1=5

数据范围

对于30% 30\% 数据,1n1001 \leq n \leq 100

对于100% 100\% 数据,1n1061 \leq n \leq 10^6 ,1ai1091\leq a_i\leq 10^9,