http://acm.zju.edu.cn/icpc2005/pre/show_problem.php?cid=141&pid=1004 #include <stdio.h>#include <string.h>#include <stdlib.h>struct Team{ char Nm[20]; int w; int d; int l; int Pt; int Gd;};int comp(const void *a,const void *b){ struct Team *t1=(struct Team *)a; struct Team *t2=(struct Team *)b; if(t1->Pt>t2->Pt) return 1; if(t1->Pt<t2->Pt) return -1; if(t1->Gd>t2->Gd) return 1; if(t1->Gd<t2->Gd) return -1; if(strcmp(t1->Nm,t2->Nm)<0) return 1; return -1;} int main(){ struct Team T[20000]; char T1[20],T2[20]; int v1,v2; int n,i,j; int N; int flag,pos; while(scanf("%d",&n)) { N=0; for(i=0;i<n;i++) { scanf("%s %d:%d %s",T1,&v1,&v2,T2); for(j=0,flag=0;j<N;j++) { if(strcmp(T1,T[j].Nm)==0) { flag=1; pos=j; break; } } if(flag==0) { strcpy(T[N].Nm,T1); T[N].w=T[N].d=T[N].l=T[N].Pt=T[N].Gd=0; if(v1>v2) { T[N].w=1; T[N].Pt=3; T[N].Gd=v1-v2; } else if(v1==v2) { T[N].d=1; T[N].Pt=1; } else { T[N].l=1; T[N].Gd=v1-v2; } N++; } else { if(v1>v2) { T[pos].w+=1; T[pos].Pt+=3; T[pos].Gd+=v1-v2; } else if(v1==v2) { T[pos].d+=1; T[pos].Pt+=1; } else { T[pos].l+=1; T[pos].Gd+=v1-v2; } } for(j=0,flag=0;j<N;j++) { if(strcmp(T2,T[j].Nm)==0) { flag=1; pos=j; break; } } if(flag==0) { strcpy(T[N].Nm,T2); T[N].w=T[N].d=T[N].l=T[N].Pt=T[N].Gd=0; if(v1<v2) { T[N].w=1; T[N].Pt=3; T[N].Gd=v2-v1; } else if(v1==v2) { T[N].d=1; T[N].Pt=1; } else { T[N].l=1; T[N].Gd=v2-v1; } N++; } else { if(v1<v2) { T[pos].w+=1; T[pos].Pt+=3; T[pos].Gd+=v2-v1; } else if(v1==v2) { T[pos].d+=1; T[pos].Pt+=1; } else { T[pos].l+=1; T[pos].Gd+=v2-v1; } } } qsort(T,N,sizeof(struct Team),comp); for(i=N-1;i>=0;i--) printf("%d %s %d %d %d %d %d\n",N-i,T[i].Nm,T[i].w,T[i].d,T[i].l,T[i].Pt,T[i].Gd); }}

评论