P1716 双调序列

题目描述

电脑组的童鞋们经常玩一些智力PK小游戏,某月某日,发源于小朋友又发明了一种新的序列:双调序列,所谓的双调呢主要是满足如下条件描述:

假定有n(n<=1000)个整数(都在longint范围内,即-2147483648~2147483647),双调序列的第一个数是n个整数中的最大数,第二个数是n个整数中的最小数,第三个数是n个数中的第二大数,第四个数是n个数中的第二小数……取过的数不能再取,依次类推,直到结束。

聪明的你听完描述就抿嘴笑了吧?那就请你用程序正确的帮他找出这n个数的双调序列。

输入输出格式

输入格式:

 

第1行为一个整数n。

接下来n行给出了题目中所述的n个整数,每行包含一个整数。

 

输出格式:

 

有n行,每行为一个整数,是满足条件的双调序列

输入输出样例

输入样例#1: 复制
5
10
-1
3
3
-9
输出样例#1: 复制
10
-9
3
-1
3

说明

对于100%的数据,n<=1000。

模拟啊

水题啊,

二分的思想,

详见代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<algorithm>
 5 #include<cstring>
 6 using namespace std;
 7 
 8 int n;
 9 int a[1002];
10 
11 bool cmp(int x,int y)
12 {
13     return x>y;
14 }
15 
16 int main()
17 {
18     scanf("%d",&n);
19     for(int i=1;i<=n;++i)
20         scanf("%d",&a[i]);
21     sort(a+1,a+n+1,cmp);
22     for(int i=1;i<=n/2;++i)
23     {
24         printf("%d
",a[i]);
25         printf("%d
",a[n-i+1]);
26     }    
27     if(n%2==1) 
28         printf("%d",a[n/2+1]);
29     return 0;
30 }

如果你不开心,那我就把右边这个帅傻子分享给你吧, 

你看,他这么好看,那么深情的望着你,你还伤心吗? 

真的!这照片盯上他五秒钟就想笑了。 

一切都会过去的。

原文地址:https://www.cnblogs.com/Mary-Sue/p/9431779.html