游客 Signup | Login
中文 | En

1297 - 不当老大

“当老大有什么意思!”小明如是想。于是他把班级里的同学按年龄排序,最为推崇第二大的同学了!然而,他也很推崇倒数第二大的同学。请问这两个同学相差多少岁?

Input

第一行是数据的组数 nCase (n<=5),每组测试数据的第一行是一个整数 n(n>=2) ,表示班级里有 n 位同学。以下是 n 位同学的年龄。

Output

年龄第二和倒数第二的同学的年龄差。

Examples

Input

2
50
16 19 4 25 20 5 28 28 30 26 13 18 2 14 1 30 14 2 3 17 6 6 24 16 16 30 2 29 16 27 9 29 24 7 14 5 7 6 13 1 21 1 18 8 5 6 2 7 14 7
20
9 29 24 7 14 5 7 6 13 1 21 1 18 8 5 6 2 7 14 7

Output

29
23

Solution C++

#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int a[100000];
void quicksort(int left,int right)	//快速排序
{
	int i,j,x;
	i=left; j=right;
	x=a[(i+j)/2];
	while (i<=j)
	{
		while (a[i]>x) i++;
		while (a[j]<x) j--;
		if (i<=j)
		{
			int t=a[i]; a[i]=a[j]; a[j]=t;
			i++; j--;
		}
	}
	if (left<j) quicksort(left,j);
	if (i<right) quicksort(i,right);
}
int main()
{
	int n,x;
	cin>>n;
	for (int i=1; i<=n; i++)
	{
		memset(a,0,sizeof(a));
		cin>>x;
		for (int i=1; i<=x; i++) cin>>a[i];
		quicksort(1,x);
		cout<<abs(a[2]-a[x-1])<<endl;
	}
	return 0;
}
Time Limit 1 second
Memory Limit 128 MB
Discuss Stats
上一题 下一题