题目链接:
https://vjudge.net/contest/396219#problem/B
题解:
这个题是求出按两个数绝对值差递减进行排序,有一个误区,相等的不一定需要靠着,比如说
5 -2 4 8 6 5,可以是5 4 5 6 -2 8,所以只需要排好序后,从中间开始,不断的向两边拓展,就会差值不断减小。//
//需要从中间位置开始输出,如果是left为中间的值得话,先输出left;反之,先输出right
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#define maxn 100100
typedef long long ll;
ll a[maxn];
ll b[maxn];
using namespace std;
int main()
{
int t;
int n;
ll k;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(int i=1; i<=n; i++)
scanf("%lld",&a[i]);
if(n==1)
cout<<a[1]<<endl;
else
{
int left,right;
sort(a+1,a+n+1);
left=n/2;
right=n/2+1;
for(; left>=1||right<=n; left--,right++)
{
if(right<=n)
{
cout<<a[right]<<" ";
}
if(left>=1)
{
cout<<a[left]<<" ";
}
}
cout<<endl;
}
}
return 0;
}