校赛F

问题描述

         例如对于数列[1 2 3 4 5 6],排序后变为[6 1 5 2 4 3]。换句话说,对于一个有序递增的序列a1, a2, a3, ……, an,排序后为an, a1, an-1, a2, an-2, a3, …。即从最大到最小,次大到次小,依次排序。

输入

共两行。

第一行一个数字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[1001];
int main()
{
    int a[1005],b[1005],n;
    while(cin>>n)
    {
        for(int i=1;i<=n;i++)
            cin>>a[i];
            sort(a+1,a+n+1);
        if(n & 1)//奇数 
        {
            int s=1;
            for(int i=n;i>n/2+1;i--)
            {
                b[s]=a[i];
                s+=2;
            }
            int t=2;
            for(int i=1;i<n/2+1;i++)
            {
                b[t]=a[i];
                t+=2;
            }
            b[n]=a[n/2+1];    
        }
        else//偶数 
        {
            int s=1;
            for(int i=n;i>=n/2+1;i--)
            {
                b[s]=a[i];
                s+=2;
            }
            int t=2;
            for(int i=1;i<=n/2;i++)
            {
                b[t]=a[i];
                t+=2;
            }
        }
        for(int i=1;i<=n;i++)
            cout<<b[i]<<" ";
        cout<<endl;
    }
    return 0;
}

去年12月去参加了一下校赛(一题没A,就看了几个题),对F题有点印象,结果今天上来没看题就按之前的思路写,写错两次(阅读理解硬伤)结果写了大半个小时

思路挺简单的sort排一下,之后赋值给新的数组,学校的OJ好像并不开放,没法跑一下,但样例是过了

猜你喜欢

转载自www.cnblogs.com/benzikun/p/10526833.html
今日推荐