P1716 双调序列[普及-]

https://www.luogu.com.cn/problem/P1716


涉及知识点:模拟,排序
橙色题

 

思路:
我们先对所有的数来一下从大到小排序。定义两个变量,分别在头尾,输出所在位置上的数后互相靠近,直到越过彼此为止。
 
代码:
include <iostream>
#include <algorithm>
#define N 1001//范围大点
using namespace std;
typedef long long ll;
ll a[N];
ll n;
inline bool cmp(ll a,ll b){
    return a>b;//从大到小排序,从小到大亦可
}
int main(){
    register int i,j;
    cin>>n;
    for(i=1;i<=n;i++)
    cin>>a[i];
    sort(a+1,a+n+1,cmp);//排序,赞一下STL
    ll pl=1,pr=n;//定义变量,初始在头尾
    while(pl<=pr){//直到越过彼此为止
        if(pl<=pr)cout<<a[pl]<<endl,pl++;//向右移动
        if(pl<=pr)cout<<a[pr]<<endl,pr--;//向左移动
    }
    return 0;
}

 

posted @ 2022-07-07 07:48  -イレイナ  阅读(48)  评论(0)    收藏  举报