题意:定义一个z排序,就是奇数位置满足ai<=a[i-1],偶数位置满足ai>=a[i-1],给你n个数,让你构造出来这个z排序的序列
思路:动手画画,显然一个小的一个大的就好了,那么排序一波,然后奇数位置从1开始放,偶数位置从(n+1)/2+1开始放,这样子扔下去的奇数位置一定小于等于偶数位置。
#include <cstdio>
#include <queue>
#include <cstring>
#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <map>
#include <string>
#include <set>
#include <ctime>
#include <cmath>
#include <cctype>
using namespace std;
#define maxn 10010
#define LL long long
int cas=1,T;
int n,a[maxn],b[maxn];
int main()
{
scanf("%d",&n);
for (int i = 1;i<=n;i++)
scanf("%d",&a[i]);
sort(a+1,a+1+n);
int l = 1,r=(n+1)/2+1;
for (int i = 1;i<=n;i++)
{
if (i%2==1)
printf("%d ",a[l++]);
else
printf("%d ",a[r++]);
}
//freopen("in","r",stdin);
//scanf("%d",&T);
//printf("time=%.3lf",(double)clock()/CLOCKS_PER_SEC);
return 0;
}