题目:http://acm.hdu.edu.cn/showproblem.php?pid=1031
二次排序。。水题。。对于英文阅读能力需要继续加强。。
下面是AC代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct node
{
int num ;
double scour ;
};
int cmp( const void *a , const void *b )
{
struct node *c = ( node *)a ;
struct node *d = ( node *)b ;
if( c->scour != d->scour )
return c->scour > d->scour ? 1 : -1;
else
return c->num > d->num ? -1 : 1 ;
}
int cmp1 ( const void *a , const void *b )
{
return *( int *)b - *( int *)a ;
}
node sum[10010] ;
int main( )
{
int n , m , k ,i;
while( scanf("%d%d%d" ,&n , &m , &k ) != EOF )
{
for( i = 0 ; i <= m ; i ++ )
sum[i].scour = 0 ;
while( n -- )
{
double a ;
for( i = 1 ; i <= m ; i++ )
{
scanf("%lf" , &a ) ;
sum[i].scour+=a ;
sum[i].num = i ;
}
}
// for( i = 1 ; i <= m ; i++ )
// printf("%lf ",sum[i].scour);
qsort( sum+1 , m , sizeof( sum[0] ) , cmp ) ;
int des[100000] ;
memset( des , 0, sizeof( des ) ) ;
for( i = m ; i > m-k ; i-- )
des[i] = sum[i].num ;
qsort( des+1 , m , sizeof( des[0] ) , cmp1 ) ;
for( i = 1 ; i <= k ; i++ )
i==1 ? printf("%d" , des[i] ) : printf(" %d" , des[i] ) ;
puts("");
}
// system( "pause" );
return 0;
}