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
#include
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

你可能感兴趣的:(akoj,安科OJ题解,结构体)