Codeforces Round #633 (Div. 2) B Sorted Adjacent Differences

链接Codeforces Round #633 (Div. 2) B

/*
Example
input
2
6
5 -2 4 8 6 5
4
8 1 4 2
output
5 5 4 6 8 -2
1 2 4 8
*/
//题目意思大概就是给你一个数组你可以随便组合,构成|a1−a2|≤|a2−a3|≤…≤|an−1−an|的数组。
//输出满足条件就可以了
//思路贪心 排序后 然后一小一大(保证绝对值依次非递增)处理 最后倒序输出
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<vector>
#define ll long long 
using namespace std;
ll gcd(ll a,ll b){
	return b==0?a:gcd(b,a%b);
}
string str;
ll a[5000];
ll b[5000];
ll c[5000];
int main(){
	int n,T;
	cin>>T;
	while(T--){
		cin>>n;
    vector<ll>arr(n);
    vector<ll>f(n);
    for(int i=0;i<n;i++)
    {
    	cin>>arr[i];
	}
	sort(arr.begin(),arr.end());
	int j=0;
	int X=2;  //X==2为小X==1为大
	for(int i=0,p=n-1;;)
	{
		if(X==1) 
		{
			f[j]=arr[p];
			p--;
			X=2;
			j++;
		}
		else
		{
			f[j]=arr[i];
			i++;
			X=1;
			j++;
		}
		if(j==n)
		break;
	}
	for(int i=n-1;i>=0;i--)  //倒序输出
	{
		cout<<f[i]<<" ";
	}
	cout<<endl;
}
	return 0;
} 
发布了23 篇原创文章 · 获赞 0 · 访问量 368

猜你喜欢

转载自blog.csdn.net/qq_43328587/article/details/105489349