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);
}
}
评论