华为编码达人秀(第二季) Olympic Game

Olympic Game
描述:

每次奥运会期间,大家都非常关注奖牌榜排名的情况。

 

现在我们假设奖牌榜的排名规则,按优先级从高到低如下: 

  • 1、金牌 数量多的排在前面;

  • 2、银牌 数量多的排在前面;

  • 3、铜牌 数量多的排在前面;

  • 4、若以上三个条件仍无法区分名次,则以国家名称的字典序排列。

 

我们假设国家名称不超过20个字符、各种奖牌数不超过100,且大于等于0。

运行时间限制: 无限制
内存限制: 无限制
输入:

第一行输入一个整数N(0


然后接下来的N行,每行包含一个字符串Namei表示每个国家的名称,和三个整数Gi、Si、Bi

分别表示每个获得的金、银、铜牌的数量,以空格隔开,如(China 51 20 21)。

 

具体见Sample Input。

输出:

输出奖牌榜的依次顺序,只输出国家名称,各占一行,具体见Sample Output。

样例输入:
5
China 32 28 34
England 12 34 22
France 23 33 2
Japan 12 34 25
Rusia 23 43 0
样例输出:
China
Rusia
France
Japan
England
答案提示:

 

创建struct,创建cmp规则,调用sort函数即可

#include
#include
#include
using namespace std;
struct jp{
    char gj[21];
    int h1;
    int h2;
    int h3;
};
bool cmp1(jp a, jp b)
{
	if(a.h1 == b.h1)
	{
		if(a.h2 == b.h2)
		{
			if(a.h3 == b.h3)
            {
                if(strcmp(b.gj,a.gj)>0) return true;
                else return false;
			}

			else
				return a.h3 > b.h3;
		}
		else
		{
			return a.h2 > b.h2;
		}
	}
	else
	{
		return a.h1 > b.h1;
	 }
}

int main()
{
    int N;
    cin>>N;
    struct jp jpb[22];
    for(int i=0;i>jpb[i].gj>>jpb[i].h1>>jpb[i].h2>>jpb[i].h3;
    }
    sort(jpb,jpb+N,cmp1);
    for(int i=0;i









你可能感兴趣的:(算法竞赛)