uva 10194 Football (aka Soccer)

来源:互联网 发布:羊毛毡仿真小猫咪淘宝 编辑:程序博客网 时间:2024/05/16 07:43

题意:给你比赛的情况,要你给出一个排名,排名先按积分高低,赢的次数多寡,赢的球减去输的球的值的高低,赢的球的多寡,打的比赛最少,最后按字典序输出(这里特别注意是不区间大小写的)。

#include <iostream>#include <cstdio>#include <map>#include <cstring>#include <string>#include <algorithm>using namespace std;struct node{    char name[40];    int point,play,win,tie,lose,score,again;    void fun(int a,int b)    {        play++;        if(a>b){win++;point+=3;}        else if(a==b) {tie++;point+=1;}        else lose++;        score+=a;   again+=b;    }}team[35];bool cmp(const node &e1,const node &e2){    if(e1.point!=e2.point) return e1.point>e2.point;    else if(e1.win!=e2.win) return e1.win>e2.win;    else if(e1.score-e1.again!=e2.score-e2.again) return e1.score-e1.again>e2.score-e2.again;    else if(e1.score!=e2.score) return e1.score>e2.score;    else if(e1.play!=e2.play) return e1.play<e2.play;    else return strcasecmp(e1.name,e2.name)<0;}int main(){    int t,t_cnt=0;    scanf("%d",&t);    getchar();    while(t--)    {        char game[105]={0},temp[40],str[1005];        int n,m,d=0;        map<string,int> adj;        memset(team,0,sizeof(team));        gets(game);        scanf("%d",&n);        getchar();        for(int i=0;i<n;i++)        {            gets(temp);            adj.insert(pair<string,int>(temp,++d));            strcpy(team[d].name,temp);        }        scanf("%d",&m);        getchar();        for(int i=0;i<m;i++)        {            char name1[40]={0},name2[40]={0};            int num1,num2;            gets(str);            sscanf(str,"%[^#]#%d@%d#%[^\n]",name1,&num1,&num2,name2);            //printf("name1=%s,num1=%d,name2=%s,num2=%d\n",name1,num1,name2,num2);            team[adj[name1]].fun(num1,num2);            team[adj[name2]].fun(num2,num1);        }        sort(team+1,team+n+1,cmp);        if(t_cnt!=0) puts("");  t_cnt++;        puts(game);        for(int i=1;i<=n;i++)        {            printf("%d) %s %dp, %dg (%d-%d-%d), %dgd (%d-%d)\n",i,                   team[i].name,team[i].point,team[i].play,team[i].win,team[i].tie,                   team[i].lose,team[i].score-team[i].again,team[i].score,team[i].again);        }    }    return 0;}


原创粉丝点击