题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2523
代码:
/*
注意题上说了有k-1个不同!!!!的组合数小于它,所以要判重
还有就是 题上说了每个数小于2000,所以组合数结果肯定小于2000,即结果在2000里判断
不能用sort排序,结果太大,会tle!
*/
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#define N 1005
using namespace std;
int a[N],vis[2005];
int main() {
int t,n,k,h;
scanf("%d",&t);
while(t--) {
scanf("%d%d",&n,&k);
memset(vis,0,sizeof(vis));
for(int i=0; i<n; i++) {
scanf("%d",&a[i]);
for(int j=0; j<i; j++) {
h=a[i]>a[j]?a[i]-a[j]:a[j]-a[i];
vis[h]=1;
}
}
for(int i=0; i<2005; i++) {
if(vis[i]==1) {
if(k==1) {
printf("%d\n",i);
break;
} else
k--;
}
}
}
}