问题描述
例如对于数列[1 2 3 4 5 6],排序后变为[6 1 5 2 4 3]。换句话说,对于一个有序递增的序列a, a, a, ……, a,排序后为a, a, a, a, a, a, …。即从最大到最小,次大到次小,依次排序。
输入
共两行。
第一行一个数字n(1≤n≤1000),表示序列长度。
第二行为一个长度为n的无序数字串。
输出
一个按规则排好序的数字串。
样例输入
5
1 2 3 4 5
样例输出
5 1 4 2 3
#include <bits/stdc++.h>
using namespace std;
int t[];
int main()
{
int a[],b[],n;
while(cin>>n)
{
for(int i=;i<=n;i++)
cin>>a[i];
sort(a+,a+n+);
if(n & )//奇数
{
int s=;
for(int i=n;i>n/+;i--)
{
b[s]=a[i];
s+=;
}
int t=;
for(int i=;i<n/+;i++)
{
b[t]=a[i];
t+=;
}
b[n]=a[n/+];
}
else//偶数
{
int s=;
for(int i=n;i>=n/+;i--)
{
b[s]=a[i];
s+=;
}
int t=;
for(int i=;i<=n/;i++)
{
b[t]=a[i];
t+=;
}
}
for(int i=;i<=n;i++)
cout<<b[i]<<" ";
cout<<endl;
}
return ;
}
去年12月去参加了一下校赛(一题没A,就看了几个题),对F题有点印象,结果今天上来没看题就按之前的思路写,写错两次(阅读理解硬伤)结果写了大半个小时
思路挺简单的sort排一下,之后赋值给新的数组,学校的OJ好像并不开放,没法跑一下,但样例是过了