您的位置:首页 > 其它

【Educational Codeforces Round 10B】【简单脑洞】z-sort 数列重排 奇小偶大

2016-03-26 18:39 399 查看
B. z-sort

time limit per test
1 second

memory limit per test
256 megabytes

input
standard input

output
standard output

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?

Input
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.

Output
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".

Examples

input
4
1 2 2 1


output
1 2 1 2


input
5
1 3 2 2 5


output
1 5 2 3 2


#include<stdio.h>
#include<iostream>
#include<string.h>
#include<string>
#include<ctype.h>
#include<math.h>
#include<set>
#include<map>
#include<vector>
#include<queue>
#include<bitset>
#include<algorithm>
#include<time.h>
using namespace std;
void fre() { freopen("c://test//input.in", "r", stdin); freopen("c://test//output.out", "w", stdout); }
#define MS(x,y) memset(x,y,sizeof(x))
#define MC(x,y) memcpy(x,y,sizeof(x))
#define MP(x,y) make_pair(x,y)
#define ls o<<1
#define rs o<<1|1
typedef long long LL;
typedef unsigned long long UL;
typedef unsigned int UI;
template <class T1, class T2>inline void gmax(T1 &a, T2 b) { if (b>a)a = b; }
template <class T1, class T2>inline void gmin(T1 &a, T2 b) { if (b<a)a = b; }
const int N = 1010, M = 0, Z = 1e9 + 7, ms63 = 0x3f3f3f3f;
int n;
int a
, b
;
int main()
{
while (~scanf("%d", &n))
{
for (int i = 1; i <= n; ++i)scanf("%d", &a[i]);
sort(a + 1, a + n + 1);
int p = 1;
for (int i = 1; i <= n; i += 2)b[i] = a[p++];
for (int i = 2; i <= n; i += 2)b[i] = a[p++];
for (int i = 1; i <= n; ++i)printf("%d ", b[i]);
puts("");
}
return 0;
}
/*
【trick&&吐槽】
不会出现impossible的哦

【题意】
给你一个长度为n(1000)的数列,每个数值可能为[1,1e9]之间。
问你我们能否使得数列重组变为一个奇小偶大的数列

【类型】
脑洞

【分析】
奇数位<=前后的偶数位?
奇数位<=全部的偶数位即可。
排序,放置

【时间复杂度&&优化】
O(nlogn)

*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息