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; }

浙公网安备 33010602011771号