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

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

  1. 金牌 数量多的排在前面;
  2. 银牌 数量多的排在前面;
  3. 铜牌 数量多的排在前面;
  4. 若以上三个条件仍无法区分名次,则以国家名称的字典序排列。

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

输入描述

第一行输入一个整数N(0<N<21),代表国家数量;

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

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

输出描述

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

样例输入

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

代码实现

#include<stdio.h>
#include<stdlib.h>
#include<string.h> typedef struct country {
char name[20];
int gold;
int silver;
int bronze;
}Ctry; // 交换array1与array2的值
void SwitchCtry(Ctry *array1, Ctry *array2)
{
Ctry temp; if(!array1 || !array2)
{
return;
}
temp = *array1;
*array1 = *array2;
*array2 = temp;
} // 对array数组按照规则进行排序
void Sort(Ctry *array, int n)
{ for(int i = 0; i < n - 1; i++)
{
for(int j = i + 1; j < n; j++)
{
if(array[i].gold < array[j].gold)
{
SwitchCtry(&array[i], &array[j]);
}
else if (array[i].gold == array[j].gold)
{
if (array[i].silver < array[j].silver)
{
SwitchCtry(&array[i], &array[j]);
}
else if (array[i].silver == array[j].silver)
{
if (array[i].bronze < array[j].bronze)
{
SwitchCtry(&array[i], &array[j]);
}
else if (array[i].bronze == array[j].bronze)
{
//strcmp()函数用到<string.h>
if(strcmp(array[i].name, array[j].name) > 0)
{
SwitchCtry(&array[i], &array[j]);
}
}
}
}
}
}
} int main()
{
int n;
Ctry *array = NULL; scanf("%d", &n);
if (n <= 0 || n >= 21)
{
return 1;
}
// 开辟结构体指针空间
array = (Ctry *)malloc(n * sizeof(Ctry));
if(array == NULL)
{
return 1;
}
// 获取输入值
for(int i = 0; i < n; i++)
{
scanf("%s %d %d %d", array[i].name, &array[i].gold, &array[i].silver, &array[i].bronze);
} Sort(array, n);
// 打印输出结果
for (int j = 0; j < n; j++)
{
printf("%s\n", array[j].name);
}
// 释放指针
free(array);
// 指针释放后置NULL
array = NULL; return 0;
}

个人主页:

www.codeapes.cn

Olympic Game的更多相关文章

  1. Gym 100818I Olympic Parade(位运算)

    Olympic Parade http://acm.hust.edu.cn/vjudge/contest/view.action?cid=101594#problem/I [题意]: 给出N个数,找出 ...

  2. CodeForces 215B Olympic Medal(数学啊)

    题目链接:http://codeforces.com/problemset/problem/215/B Description The World Programming Olympics Medal ...

  3. Olympic Class Ships【奥林匹克级邮轮】

    Olympic Class Ships You probably know about the Titanic, but it was actually just noe of three state ...

  4. [ACM_几何] The Deadly Olympic Returns!!! (空间相对运动之最短距离)

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=28235#problem/B 题目大意: 有两个同时再空间中匀速运动的导弹,告诉一个时间以 ...

  5. [bzoj 3701] Olympic Games (莫比乌斯反演)

    题目描述 给出n,m,l,r,modn,m,l,r,modn,m,l,r,mod 表示一个(n+1)∗(m+1)(n+1)*(m+1)(n+1)∗(m+1)的格点图,求能够互相看见的点对个数对modm ...

  6. 构建通用的 React 和 Node 应用

    这是一篇非常优秀的 React 教程,这篇文章对 React 组件.React Router 以及 Node 做了很好的梳理.我是 9 月份读的该文章,当时跟着教程做了一遍,收获很大.但是由于时间原因 ...

  7. Codeforces CF#628 Education 8 A. Tennis Tournament

    A. Tennis Tournament time limit per test 1 second memory limit per test 256 megabytes input standard ...

  8. 告别我的OI生涯

    本文章写于2008年12月15日. 随着2008noip的结束,我也结束了我的OI生涯. 信息竞赛也许是从小到大让我最最努力的一件事.我记得参加2006noip初赛前,每天中午为了上信息课都吃不上中午 ...

  9. NOIP200805 笨小猴(低效算法)(一大桶水)【A006】

    [A006]笨小猴[难度A]—————————————————————————————————————————————————————————————— [题目要求] 笨小猴的词汇量很小,所以每次做英 ...

随机推荐

  1. 20191209 Linux就该这么学(5)

    5. 用户身份与文件权限 5.1 用户的身份和能力 Linux 系统的管理员之所以是 root,并不是因为它的名字叫 root,而是因为该用户的身份号码即 UID( User IDentificati ...

  2. 模板中用url_for的好处

    from flask import Flask,render_template app = Flask(__name__) @app.route('/') def index(): return re ...

  3. No repository found containing: …错误解决

    由于我安装的是Eclipse ForJava Development,无JAVA EE,查找资料后发现可以自己在已有软件的基础上配置,总结如下: >>>>>点开之后,找到 ...

  4. C语言课程程序设计

    项目名称和目标 项目为基于EasyX库的RPG游戏,目标能实现控制游戏主角自由移动,能与NPC对话交互. 我组目前还未确定具体项目名称 项目主体功能 项目的主体功能具有一个游戏所拥有的完整功能,包括但 ...

  5. HDU 1042 N!(高精度阶乘、大数乘法)

    N! Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Submi ...

  6. BZOJ 1053 反素数 题解

    题面 引理1:  1~n中的最大反质数,就是1~n中约数个数最多的数中最小的一个(因为要严格保证g(x)>g(i)): 引理2:1~n中任何数的不同因子不会超过10个,因为他们的乘积大于2,00 ...

  7. 数位dp(二进制01问题)

    http://poj.org/problem?id=3252 题意:给你一个区间,求区间有多少个满足条件的数.条件是:把该数转为二进制后,如果0的数量大于等于1的数量,则为满足条件的数量. 题解:数位 ...

  8. Javaweb实训-宠物医院-社区宠物医院登陆页面

    <%--        Created by IntelliJ IDEA.        User: Administrator        Date: 2018/3/13        Ti ...

  9. Java学习:identityHashCode和hashCode方法

    System类提供了一个identityHashCode(Object x)方法,这个方法返回的是指定对象的精确hashCode值,也就是根据该对象的地址计算得到的hashCode值. 当某个类的ha ...

  10. TCPcopy环境搭建

    参考文档:https://github.com/session-replay-tools/tcpcopy 辅助机器Assistant Server: 1.下载最新版本 git clone git:// ...