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