嫖裤子序列
链接:https://ac.nowcoder.com/acm/contest/2763/G
来源:牛客网
题目描述
众所周知,trx喜欢白嫖,经常会把别人嫖的裤衩都不剩。
现在有n条长度非严格递增的裤子,每条裤子都有一定的长度,trx打算从最短的裤子开始嫖,嫖完最短的又嫌太短又去嫖最长的,嫖完最长的又去嫖最短的,如此循环。
请输出谭嫖裤序列(即trx白嫖裤子的长度顺序)
现在有n条长度非严格递增的裤子,每条裤子都有一定的长度,trx打算从最短的裤子开始嫖,嫖完最短的又嫌太短又去嫖最长的,嫖完最长的又去嫖最短的,如此循环。
请输出谭嫖裤序列(即trx白嫖裤子的长度顺序)
输入描述:
第一行一个整数,代表裤子个数n(1<n≤105)n(1<n\leq10^5)n(1<n≤105)
第二行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(∀i≥2,1≤ai−1≤ai≤105)
输出描述:
一行为trx白嫖的序列
题解: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; }