HDU 1862 EXCEL排序
这个很水用个结构体,不过排序要用快排,别用冒泡,否则超时.TLE 我就悲剧了一次
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct e
{
char t[20],name[20];
int s;
}p[100005];
int n,c;
int cmp1( const void *a,const void *b )
{
struct e f1 = *( (e *)a ),f2 = *( ( e * )b );
return strcmp( f1.t,f2.t );
}
int cmp2( const void *a,const void *b )
{
struct e f1 = *( (e *)a ),f2 = *( ( e * )b );
int t = strcmp( f1.name,f2.name );
if( t )
return t;
else
return strcmp( f1.t,f2.t );
}
int cmp3( const void *a,const void *b )
{
struct e f1 = *( (e *)a ),f2 = *( ( e * )b );
int t = f1.s - f2.s;
if( t )
return t;
else
return strcmp( f1.t,f2.t );
}
int main( )
{
int t = 0;
while( scanf( "%d%d",&n,&c ) ,n|c )
{
++t;
for( int i = 0; i < n; ++i )
scanf( "%s%s%d",p[i].t,p[i].name,&p[i].s );
if( c == 1 )
qsort( p,n,sizeof( p[0] ),cmp1 );
if( c == 2 )
qsort( p,n,sizeof( p[0] ),cmp2 );
if( c == 3 )
qsort( p,n,sizeof( p[0] ),cmp3 );
printf( "Case %d:\n",t );
for( int i = 0; i < n; ++i )
printf( "%s %s %d\n",p[i].t,p[i].name,p[i].s );
}
return 0;
}
本人还是新手 ,转载请注明来自Lvsi‘s home
浙公网安备 33010602011771号