【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
output
input
output
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) */
相关文章推荐
- 【HDU 5366】The mook jong 详解
- HDU 5240 Exam (好水的题)
- 北大—1006——Biorhythms
- 时间计算(heaven.pas/cpp)
- 工作依赖(job.cpp/pas)
- 题目 英雄 (BFS)
- kmp 学习 hihocoder #1015
- HDU 1096 A+B for Input-Output Practice (VIII)
- HUST-1601 - Shepherd 暴力
- P1478
- P1035
- P1008 难度2.7
- 2020 绝对值排序
- 2021 发工资咯
- 2022 海选女主角
- 2024 C语言合法标识符
- 2025 查找最大元素
- 2026 首字母变大写
- 2027 统计元音
- 2028 Lowest Common Multiple Plus