比武
- 描述
-
武林有个传承千年的传统,每隔十年,各门各派的武林高手会齐聚华山之巅,进行一番比武切磋。每名参加比武的高手都有一个武力值,代表他/她的武功水平,武力值越高代表武功越高。每场比武都是一对一的,为了体现公平,任何两名比武的对手的武力值之差不能超过一个阈值,不然高手一招就可能取了对方性命。现在把所有武林高手的武力值从小到大依次给出,请计算一共能安排多少场不同对手之间的比武。
- 输入
- 一共两行,第 1 行包含两个整数 N, M,分别表示比武人数(1<=N<=106) 和 比武双方武力值之差的最大值(0<=M<=107)。
第 2 行包含 N 个正整数 Wi,表示每个人的武力值(1<=Wi<=107),保证是不降序列,可能有武力值相同的情况。 - 输出
- 一个整数,表示一共能安排多少场不同的比武。
- 样例输入
-
样例输入1 4 2 1 3 4 7 样例输入2 10 8 1 4 5 5 9 10 10 10 19 27
- 样例输出
-
样例输出1 2 样例输出2 26
- 提示
- 样例 1 的说明:只有 (1,3) 和 (3,4) 能安排比武,其余任何两人都不行。因此输出 2。
样例 2 的说明:可以安排的比武包括:(1,4), (1,5), (1,5), (1,9), (4,5), (4,5), (4,9), (4,10), (4,10), (4,10), (5,5), (5,9), (5,10), (5,10), (5,10), (5,9), (5,10), (5,10), (5,10), (9,10), (9,10), (9,10), (10,10), (10,10), (10,10), (19,27),一共26场。
但是,例如 (1,10) 或 (5,19) 不能安排比武,因为双方的差值大于 8;而 (1,4) 和 (4,1) 算作同一场比武;而 (4,5) 和 (4,5) 有两场是因为有两人的武力值为5,两场比武并不重复。
数据范围和约定:
对于 20% 的数据,N<=5000;
对于另外 10% 的数据,M=0;
对于另外 20% 的数据,1<=Wi<=100;
对于全部数据,1<=N<=106,0<=M<=107,1<=Wi<=107,并且 Wi 是不降序列(可能有相同值)。