足球世界杯小组赛(加强版)
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;
}