uva 10194 - Football (aka Soccer)

View Code
#include<stdio.h>
#include<string.h>
typedef struct node{
    int score;
    int win;
    int lose;
    int jball;
    int wpoint;
    int zchang;
    int tie;
    int wingame;
    int losegame;
    char name[35];
}team;
team teams[1005];
int search(char name[],int n)
{
    int i;
    for(i = 0;i < n;i++)
        if(strcmp(name,teams[i].name) == 0)
    return i;
    return 80;
}

int main()
{
    int t,cas,n,i,j,m;
    char cup[105],str[205],team1[35],team2[35];
    scanf("%d",&cas);
    getchar();
    while(cas--)
    {
        gets(cup);
        puts(cup);
        scanf("%d",&n);
        getchar();
        for(i = 0;i < n;i++)
        teams[i].jball = teams[i].zchang = teams[i].losegame = teams[i].wingame = teams[i].tie = teams[i].lose = teams[i].wpoint =teams[i].score = teams[i].win = 0;
        for(i = 0;i < n;i++)
        {
            gets(teams[i].name);
        }
        scanf("%d",&m);
        getchar();
        for(i = 0;i < m;i++)
        {
            int b1,b2;
            gets(str);
            char *p,*_p;
            p=str;
           _p=str;
           while(*p!='#')
            p++;
           *p='\0';
           strcpy(team1,_p);
           p++;
           b1=0;
           while(*p!='@')
           {
            b1=b1*10+*p-'0';
            p++;
           }
           p++;
           b2=0;
           while(*p!='#')
           {
            b2=b2*10+*p-'0';
            p++;
           }
           p++;
           strcpy(team2,p);

            int t1,t2;
            t1 = search(team1,n);
            t2 = search(team2,n);
            teams[t1].zchang++;
            teams[t1].lose += b2;
            teams[t1].win += b1;
            teams[t2].zchang++;
            teams[t2].lose += b1;
            teams[t2].win += b2;
            teams[t1].jball = teams[t1].win - teams[t1].lose;
            teams[t2].jball = teams[t2].win -teams[t2].lose;
            if(b1>b2)
            {
                teams[t1].score += 3;
                teams[t1].wpoint++;
                teams[t2].losegame++;
            }
            else if(b1 == b2)
            {
                teams[t1].score += 1;
                teams[t2].score += 1;
                teams[t1].tie++;
                teams[t2].tie++;
            }
            else
            {
                teams[t2].score += 3;
                teams[t2].wpoint ++;
                teams[t1].losegame++;
            }
        }
        for(i = 0;i < n-1;i++)
        {
            t = i;
            for(j = i+1;j < n;j++)
            {
                if(teams[t].score < teams[j].score)
                t = j;
                else if(teams[t].score == teams[j].score)
                {
                    if(teams[t].wpoint < teams[j].wpoint)
                    t = j;
                    else if(teams[t].wpoint == teams[j].wpoint )
                    {
                        if(teams[t].jball < teams[j].jball)
                        t = j;
                        else if(teams[t].jball == teams[j].jball)
                        {
                            if(teams[t].win < teams[j].win)
                            t = j;
                            else if(teams[t].win == teams[j].win)
                            {
                                if(teams[t].zchang > teams[j].zchang)
                                t = j;
                                else if(teams[t].zchang == teams[j].zchang)
                                {
                                    if(strcasecmp(teams[t].name,teams[j].name) > 0)
                                    t = j;
                                }
                            }
                        }

                    }
                }
            }
            if(t != i)
            {
                team temp;
                temp = teams[t];
                teams[t] = teams[i];
                teams[i] = temp;
            }
        }
        for(i = 0;i < n;i++)
            printf("%d) %s %dp, %dg (%d-%d-%d), %dgd (%d-%d)\n",i+1,teams[i].name,teams[i].score,teams[i].zchang,teams[i].wpoint,teams[i].tie,teams[i].losegame,teams[i].jball,teams[i].win,teams[i].lose);
        if(cas)printf("\n");
    }
    return 0;
}
posted @ 2012-07-24 11:19  某某。  阅读(172)  评论(0编辑  收藏  举报