1408191944-hd-shǎ崽 OrOrOrOrz.cpp

本文介绍了一个特殊的序列选择算法,该算法要求从一个不重复的整数序列中按特定顺序选择数字,即先选最大值,再选最小值,依此类推。文章提供了完整的C++实现代码,并针对输入序列长度为奇数的情况进行了特别处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

shǎ崽 OrOrOrOrz

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 3853 Accepted Submission(s): 1193


 

Problem Description

Acmer in HDU-ACM team are ambitious, especially shǎ崽, he can spend time in Internet bar doing problems overnight. So many girls want to meet and Orz him. But Orz him is not that easy.You must solve this problem first.
The problem is :
Give you a sequence of distinct integers, choose numbers as following : first choose the biggest, then smallest, then second biggest, second smallest etc. Until all the numbers was chosen .
For example, give you 1 2 3 4 5, you should output 5 1 4 2 3

 


 

Input

There are multiple test cases, each case begins with one integer N(1 <= N <= 10000), following N distinct integers.

 


 

Output

Output a sequence of distinct integers described above.

 


 

Sample Input

51 2 3 4 5

 


 

Sample Output

5 1 4 2 3

 


 

题目大意

       给你一个不同的整数序列,依次输出号码如下:首先选择最大的,然后第二的最小,最大,最小二等选择所有的号码。

注意事项

       要注意给出的长度是奇数还是偶数,分别考虑。

代码

#include<stdio.h>
#include<algorithm>
using namespace std;
int s[11000];
int main()
{
	int n;
	int i,j,k;
	while(scanf("%d",&n)!=EOF)
	{
		for(i=0;i<n;i++)
		    scanf("%d",&s[i]);
		sort(s,s+n);
		k=n/2;
		for(i=0,j=n-1;i<k;i++,j--)
		{
			printf("%d %d",s[j],s[i]);
			if(i!=k-1)
				printf(" ");
		}
		if(n%2==1)//长度是奇数的时候要另外考虑 
		    printf(" %d",s[k]);
		printf("\n");
	}
	return 0;
}


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值