A student of z-school found a kind of sorting called z-sort. The array a with n elements are z-sorted if two conditions hold:
- ai ≥ ai - 1 for all even i,
- ai ≤ ai - 1 for all odd i > 1.
For example the arrays [1,2,1,2] and [1,1,1,1] are z-sorted while the array [1,2,3,4] isn’t z-sorted.
Can you make the array z-sorted?
The first line contains a single integer n (1 ≤ n ≤ 1000) — the number of elements in the array a.
The second line contains n integers ai (1 ≤ ai ≤ 109) — the elements of the array a.
If it's possible to make the array a z-sorted print n space separated integers ai — the elements after z-sort. Otherwise print the only word "Impossible".
4 1 2 2 1
1 2 1 2
5 1 3 2 2 5
1 5 2 3 2
给一个长度为N的序列,让我们构造出一个序列,使得序列满足:
- ai ≥ ai - 1 for all even i,
- ai ≤ ai - 1 for all odd i > 1.
思路(中秋节快乐,水一道题= =):
显然结果是一定存在的,我们将序列按照从小到大排序,然后分奇偶分配一下值就行了。
Ac代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int a[150000];
int ans[150000];
int main()
{
int n;
while(~scanf("%d",&n))
{
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
sort(a+1,a+1+n);
int j=1;
for(int i=1;i<=n;i+=2)
{
ans[i]=a[j];j++;
}
j=n;
for(int i=2;i<=n;i+=2)
{
ans[i]=a[j];j--;
}
for(int i=1;i<=n;i++)
{
printf("%d ",ans[i]);
}
printf("\n");
}
}