嫖裤子序列

链接:https://ac.nowcoder.com/acm/contest/2763/G
来源:牛客网

题目描述

众所周知,trx喜欢白嫖,经常会把别人嫖的裤衩都不剩。

现在有n条长度非严格递增的裤子,每条裤子都有一定的长度,trx打算从最短的裤子开始嫖,嫖完最短的又嫌太短又去嫖最长的,嫖完最长的又去嫖最短的,如此循环。

请输出谭嫖裤序列(即trx白嫖裤子的长度顺序)

输入描述:

第一行一个整数,代表裤子个数n(1<n≤105)n(1<n\leq10^5)n(1<n105)

第二行n个整数,aia_iai代表第i条裤子的长度 (裤子长度a为非降序列)

a1,a2,a3,......an(∀i≥2,1≤ai−1≤ai≤105)a_{1},a_{2},a_{3},......a_{n} (\forall i\ge 2, 1\le a_{i-1} \leq a_{i} \leq 10^5)a1,a2,a3,......an(i2,1ai1ai105)

输出描述:

一行为trx白嫖的序列
示例1

输入

复制
5
1 2 3 4 5

输出

复制
1 5 2 4 3
 
题解:sort一遍,记录start和end,用flag来标识当前嫖的是start还是end
 
#include <stdio.h>
#include <algorithm>
#define MAX 100005
 
using namespace std;
 
int main(){
    int n,start,end,s[MAX];
    bool flag;
    while(scanf("%d",&n)!=EOF){
        for(int i=0;i<n;i++){
            scanf("%d",&s[i]);
        }
        sort(s,s+n);
        start=0;    end=n-1;
        flag=true;
        for(int i=0;i<n;i++){
            if(i==n-1)  printf("%d\n",s[start]);
            else{
                if(flag){
                    printf("%d ",s[start]);
                    start++;
                    flag=!flag;
                }
                else{
                    printf("%d ",s[end]);
                    end--;
                    flag=!flag;
                }
            }
        }
    }
    return 0;
}


猜你喜欢

转载自www.cnblogs.com/shiliuxinya/p/12168647.html
今日推荐