Posted on 2010-08-04 21:32
MiYu 閱讀(426)
評論(0) 編輯 收藏 引用 所屬分類:
C/C++ 、
ACM ( 排序 )
//MiYu原創, 轉帖請注明 : 轉載自 ______________白白の屋
題目地址 :
http://acm.hdu.edu.cn/showproblem.php?pid=2673
基本就是 當前最大值 和 最小值 的交替輸出~
很簡單的水題, 直接代碼:
//MiYu原創, 轉帖請注明 : 轉載自 ______________白白の屋
#include <stdio.h>
#include <stdlib.h>
int num[10001];
int cmp ( const void *a, const void *b )
{
return *( ( int * )a ) - *( ( int * )b );
}
int main ()
{
int N,i,j,k;
while ( scanf ( "%d",&N ) != EOF )
{
for ( i = 0; i != N; ++ i )
{
scanf ( "%d",num + i );
}
qsort ( num , N ,sizeof (int), cmp );
i = N - 1, j = 0;
for ( k = 0; k != N; ++ k )
{
if ( k % 2 == 0 )
{
printf ( !j ? "%d" : " %d",num[i--] );
}
else
{
printf ( " %d",num[j++] );
}
}
putchar ('\n');
}
return 0;
}
另外沒事做用 map 做了一次, 時間上增加了 46 MS .
#include <iostream>
#include <algorithm>
#include <map>
using namespace std;
map < int ,int > mp;
int main ()
{
int N,i,k;
while ( scanf ( "%d",&N ) != EOF )
{
int num;
mp.clear();
for ( i = 0; i != N; ++ i )
{
scanf ( "%d",&num );
mp[ num ] = 1;
}
map < int ,int >::iterator beg = mp.begin();
map < int ,int >::iterator end = mp.end();
end --;
for ( k = 0; k != N; ++ k )
{
if ( k % 2 == 0 )
{
printf ( !k ? "%d" : " %d",end->first );
end --;
}
else
{
printf ( " %d",beg->first );
beg ++;
}
}
putchar ('\n');
}
return 0;
}