问题 6112 --⼩杨的握⼿问题

6112: ⼩杨的握⼿问题★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 46  解决: 7
[提交][状态][命题人:]

题目描述

⼩杨的班级⾥共有 N 名同学,学号从 0 ⾄ N-1 。某节课上,⽼师安排全班同学进⾏⼀次握⼿游戏,具体规则如下:⽼师安排了⼀个顺序,让全班 N 名同学依次进⼊教室。每位同学进⼊教室时,需要和已经在教室内且学号⼩于⾃⼰的同学握⼿。 现在,⼩杨想知道,整个班级总共会进⾏多少次握⼿。
提⽰:可以考虑使⽤归并排序进⾏降序排序,并在此过程中求解。

输入

输⼊包含 2 ⾏。

第⼀⾏⼀个整数 N ,表⽰同学的个数;

第⼆⾏ N 个⽤单个空格隔开的整数,依次描述同学们进⼊教室的顺序,每个整数在 [0,N-1] 之间,表⽰该同学的学号。 保证每位同学会且只会进⼊教室⼀次.

输出

输出⼀⾏⼀个整数,表⽰全班握⼿的总次数。 

样例输入
Copy
样例输入 1
4
2 1 3 0
样例输入 2
6
0 1 2 3 4 5
样例输出
Copy
样例输出 1
2
样例输出 2
15

提示

对于样例数据1:

2 号同学进⼊教室,此时教室⾥没有其他同学。
1 号同学进⼊教室,此时教室⾥有 2 号同学。1 号同学的学号⼩于 2 号同学,因此他们之间不需要握⼿。
3 号同学进⼊教室,此时教室⾥有 1,2 号同学。3 号同学的学号⽐他们都⼤,因此 3 号同学需要分别和另外两位同学握⼿。

0 号同学进⼊教室,此时教室⾥有 1,2,3 号同学。 0 号同学的学号⽐他们都⼩,因此 0 号同学不需要与其他同学握⼿。

综上所述全班⼀共握⼿ 2 次。 

对于样例数据2

全班所有同学之间都会进⾏握⼿,因为每位同学来到教室时,都会发现他的学号是当前教室⾥最⼤的,所以他需要 和教室⾥的每位其他同学进⾏握⼿。 

对于所有测试点,保证2<=N<=3e5


来源

[提交][状态]