如果不能够直接秒杀的题,就不算水题。又应证了那句话,有时候,如果在水题上卡住,那么此题对于你来说,也就不算是水题了额~~
刚睡醒,迷迷糊糊。
题目的意思很简单,求一个最大的,再求一个最小的。几乎是什么营养的题目。可是一开始我还是傻傻地直接暴力,哈哈,为我的笨付出了直接代价。10000*10000,不TLE才怪。
后来再稍微想了下,应该先从大到小排序,然后取一个头,再取一个尾,直接扫描到中间,分n为奇偶情况考虑。不知各位大虾是不是有更快。
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a,int b)
{
if(a>b)
return true;
else
return false;
}
int main(void)
{
int n,i,j,num[10001];
while(scanf("%d",&n)==1)
{
for(i=0;i<n;i++)
scanf("%d",&num[i]);
sort(num,num+n,cmp);
if(n%2)//奇数这种情况
{
for(j=0,i=0;i<n/2;i++,j++)
{
printf("%d %d ",num[j],num[n-j-1]);
}
printf("%d\n",num[n/2]);
}
else//偶数这种情况
{
for(j=0,i=0;i<n/2-1;i++,j++)
printf("%d %d ",num[j],num[n-j-1]);
printf("%d %d\n",num[n/2-1],num[n/2]);
}
}
return 0;
}