代码改变世界

Sicily/1688. Soldiers

2011-08-21 14:27  Min·zc  阅读(182)  评论(0编辑  收藏  举报

讲所有的士兵按照身高排序,然后每次分别从首位各选择一个士兵加入队列

可以讲士兵想象成数轴上的点,这样首尾取数一定可以保证相邻士兵的身高差不同

#include <iostream>

#include <algorithm>
#include <memory.h>
using namespace std;
int main()
{
        int t;
        cin>>t;
        while(t--)
        {
                int soldiers[10010];
                int n;
                cin>>n;
                for(int i=0;i<n;i++)
                        cin>>soldiers[i];
                sort(soldiers,soldiers+n);
                int* head=soldiers;
                int* rear=soldiers+n-1;
                for(int i=0;i<=n/2;i++)
                {
                        cout<<*head<<" ";
                        head++;
                        if(rear>head)
                                cout<<*rear<<" ";
                        rear--;
                }
                cout<<endl;
        }
}