【题目链接】
http://acm.hdu.edu.cn/showproblem.php?pid=6095
题目意思
一场n个人比赛,给个数组a表示n个人的实力,当|ai−aj|>K
,则ai获胜。否则都可以能获胜。问你a数组里面可能获胜的人数。
解题思路
对数组排序,从大到小不断比较看是否满足相减小于等于k,如果满足继续比较下组,直到不满足为止
代码部分
#include<iostream>
#include<cmath>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cassert>
using namespace std;
int n,K,A[110000];
int main()
{
int t;
scanf("%d",&t);
assert(1<=t&&t<=100);
for (; t; t--)
{
scanf("%d%d",&n,&K);
for (int i=1; i<=n; i++)
{
scanf("%d",&A[i]);
}
sort(A+1,A+n+1);
int ans=n;
for (int i=n; i>1; i--)
if (A[i]-A[i-1]>K)
{
ans=n-i+1;
break;
}
printf("%d\n",ans);
}
return 0;
}