akoj-1265-足球世界杯小组赛(加强版)(结构体排序)

足球世界杯小组赛(加强版)

Time Limit:1000MS  Memory Limit:65536K
Total Submit:59 Accepted:14

Description

世界杯小组赛的规则是胜一场则得3分,负得0分,平局则各得1分,现在给你4只球队,和他们的比赛结果,你的任务是输出该组的出线名单

Input

四个球队的名称和比赛场数N,及N场比赛数据,格式是 主球队名称 客球队名称 主队进球数 客队进球数 
规则是胜者得3分,平局各得一分,负者不得分。 
相同的积分,按照净胜球个数比,相同的净胜球按照进球数来排序,为了简化我们假定每组都没有并列且分出了比赛结果 

Output

你的任务是输出队伍的最终出线名单,按照名次降序

Sample Input

A B C D
6
A B 3 4
C D 0 5
A C 2 0
B D 3 2
B C 1 0
A D 4 3

Sample Output

B A

Hint

B三场积9分,A三场积6分,出线

Source

#include<iostream>
#include<algorithm>
using namespace std;
struct P
{
    string s;
    int jifen;
    int jinshengqiu;
    int qiushu;
} q[4];
int dec(const void*a,const void*b)
{
    P* ta=(P*)a;
    P* tb=(P*)b;
    if(ta->jifen!=tb->jifen)
        return tb->jifen-ta->jifen;
    if( tb->jinshengqiu-ta->jinshengqiu)
        return tb->jinshengqiu-ta->jinshengqiu;
    return tb->qiushu-ta->qiushu;
}
int main()
{
    for(int i=0; i<4; i++)
        cin>>q[i].s;
    int n;
    cin>>n;
    while(n--)//读入
    {
        string e,f;
        int a,b;
        cin>>e>>f>>a>>b;
        for(int i=0; i<4; i++)
        {
            if(e==q[i].s)
            {
                q[i].qiushu+=a;
                if(a>b)
                {
                    q[i].jinshengqiu+=a-b;
                    q[i].jifen+=3;
                }
                if(a==b)	q[i].jifen++;
            }
            if(f==q[i].s)
            {
                q[i].qiushu+=b;
                if(a<b)
                {
                    q[i].jinshengqiu+=b-a;
                    q[i].jifen+=3;
                }
                if(a==b)	q[i].jifen++;
            }
        }
    }
    qsort(q,4,sizeof(P),dec);				//排序输出
    cout<<q[0].s<<" "<<q[1].s<<endl;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值