题意描述:给一个长度为n的数组a[],现从中挑k个数构成一个新数组b[],要求b[]满足:
任意1<=i<j<=k,都有|b[i]-b[j]|>=MAX,MAX为b[]中最大的数,求k的最大值。

经过观察,我们能发现一些性质:
1.b[]数组最多含有1个正数;
2.为了能放入这个正数,把b[]中其他数挪出,一定不会让答案更优。(用多于一个数换一个数肯定血亏)

所以b[]数组里可以放入a[]中所有非负数,同时维护一下两两之差绝对值的最小值,然后(如果有的话)再放入小于等于这个最小值的正数。统计放入的数的个数k就是答案。可以用排序辅助维护最小值。
复杂度O(nlogn)

```
#include<bits stdc++.h>
using namespace std;
int a[100010];
int b[100010],tot;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int t,n,ans;
cin>>t;
while(t--)
{
cin>>n;
tot=0,ans=0;
for(int i=1;i<=n;++i)
{
cin>>a[i];
if(a[i]<=0)
{
++ans;
b[++tot]=-a[i];
}
}
sort(b+1,b+1+tot);
if(tot==0) {cout<<ans+1<<endl;continue;} int minn="2000000010;" for(int i="1;i<tot;++i)" { if(minn>b[i+1]-b[i]) minn=b[i+1]-b[i];
}
int flag=0;
for(int i=1;i<=n;++i)
{
if(a[i]>0 && a[i]<=minn)
{
flag=1;
}
}
cout<</ans+1<<endl;continue;}></j<=k,都有|b[i]-b[j]|>