Banner Home Page DIY Contests Problems Ranklist Status Statistics

爬山

Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65536/65536K (Java/Other)
Total Submission(s) : 48   Accepted Submission(s) : 16

Font: Times New Roman | Verdana | Georgia

Font Size:

Problem Description

小Z准备去爬山,在他的面前有N座山,每座山都有对应的高度。他想选择两座高度差最小的山进行攀爬。但由于好多山之间的高度差可能是相同的,所以他需要你告诉他高度差最小的两座山的高度差是多少以及有多少种不同的选取方式(选取山A、B和选取山B、A视为同一种选取方式)。

Input

输入一个T,代表数据的组数。(T<=10)
每组数据包含一个N,代表有多少座山。(2<=N<=100,000)
接下来一行包括N个数,分别表示每座山的高度x(1<=x<=1000,000,000)。

Output

对于每组测试样例,输出一行,包含两个整数,代表两座山最小的高度,以及有多少种不同的方式选取两座山。两个数之间用一个空格隔开,每个测试样例占一行。

Sample Input

2
5
1 2 5 4 3
4
3 3 3 10

Sample Output

1 4
0 3

Hint

测试样例包含2组样例
第一组样例有5座山,高度分别为1,2,5,4,3,所以高度差最小是1,有4种不同的选取方式,
分别为选取第一座山和第二座山、选取第二座山和第五座山、选取第四座山和第五座山、选取第三座山和第四座山。
第二组样例有4座山,高度分别为3,3,3,10,所以高度差最小是0,有3种不同的选取方式,
分别为选取第一座山和第二座山、选取第二座山和第三座山、选取第一座山和第三座山。

Source

642超哥

Statistic | Submit | Back