1200*B. Sorted Adjacent Differences(构造)

Problem - 1339B - Codeforces 

1200*B. Sorted Adjacent Differences(构造)_第1张图片

1200*B. Sorted Adjacent Differences(构造)_第2张图片

解析:

        题目要求每相邻两个值差的绝对值相等或递增。

        先排序,可以想到我们先取两侧的数肯定相距最远,然后靠中心每次取两个数,这样符合题目要求。

        直接遍历,先取的是答案靠后的数据,所以暂时保存,最后输出即可。 

#include
using namespace std;
#define int long long
const int N=2e5+5;
int t,n,a[N];
signed main(){
	scanf("%lld",&t);
	while(t--){
		scanf("%lld",&n);
		for(int i=1;i<=n;i++){
			scanf("%lld",&a[i]);
		}
		sort(a+1,a+n+1);
		vectorres;
		for(int i=1;i<=n;i++){
			int j=n+1-i;
			if(i>j) break;
			if(i!=j){
				res.push_back(a[j]);
				res.push_back(a[i]);
			}
			else res.push_back(a[i]);
		}
		for(int i=res.size()-1;i>=0;i--) printf("%lld ",res[i]);
		puts("");
	}
	return 0;
}

你可能感兴趣的:(codeforces,算法,c语言,数据结构,c++,开发语言)