HDU2673shǎ崽(水题)

如果不能够直接秒杀的题,就不算水题。又应证了那句话,有时候,如果在水题上卡住,那么此题对于你来说,也就不算是水题了额~~

刚睡醒,迷迷糊糊。

     题目的意思很简单,求一个最大的,再求一个最小的。几乎是什么营养的题目。可是一开始我还是傻傻地直接暴力,哈哈,为我的笨付出了直接代价。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;
}

原文地址:https://www.cnblogs.com/cchun/p/2520080.html