seo站长工具箱黄山网络推广公司
Problem - 1339B - Codeforces
解析:
题目要求每相邻两个值差的绝对值相等或递增。
先排序,可以想到我们先取两侧的数肯定相距最远,然后靠中心每次取两个数,这样符合题目要求。
直接遍历,先取的是答案靠后的数据,所以暂时保存,最后输出即可。
#include<bits/stdc++.h>
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);vector<int>res;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;
}