Olympic Game
每次奥运会期间,大家都非常关注奖牌榜排名的情况。
现在我们假设奖牌榜的排名规则,按优先级从高到低如下:
- 金牌 数量多的排在前面;
- 银牌 数量多的排在前面;
- 铜牌 数量多的排在前面;
- 若以上三个条件仍无法区分名次,则以国家名称的字典序排列。
我们假设国家名称不超过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;
}
个人主页:
Olympic Game的更多相关文章
- Gym 100818I Olympic Parade(位运算)
Olympic Parade http://acm.hust.edu.cn/vjudge/contest/view.action?cid=101594#problem/I [题意]: 给出N个数,找出 ...
- CodeForces 215B Olympic Medal(数学啊)
题目链接:http://codeforces.com/problemset/problem/215/B Description The World Programming Olympics Medal ...
- Olympic Class Ships【奥林匹克级邮轮】
Olympic Class Ships You probably know about the Titanic, but it was actually just noe of three state ...
- [ACM_几何] The Deadly Olympic Returns!!! (空间相对运动之最短距离)
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=28235#problem/B 题目大意: 有两个同时再空间中匀速运动的导弹,告诉一个时间以 ...
- [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 ...
- 构建通用的 React 和 Node 应用
这是一篇非常优秀的 React 教程,这篇文章对 React 组件.React Router 以及 Node 做了很好的梳理.我是 9 月份读的该文章,当时跟着教程做了一遍,收获很大.但是由于时间原因 ...
- 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 ...
- 告别我的OI生涯
本文章写于2008年12月15日. 随着2008noip的结束,我也结束了我的OI生涯. 信息竞赛也许是从小到大让我最最努力的一件事.我记得参加2006noip初赛前,每天中午为了上信息课都吃不上中午 ...
- NOIP200805 笨小猴(低效算法)(一大桶水)【A006】
[A006]笨小猴[难度A]—————————————————————————————————————————————————————————————— [题目要求] 笨小猴的词汇量很小,所以每次做英 ...
随机推荐
- 20191209 Linux就该这么学(5)
5. 用户身份与文件权限 5.1 用户的身份和能力 Linux 系统的管理员之所以是 root,并不是因为它的名字叫 root,而是因为该用户的身份号码即 UID( User IDentificati ...
- 模板中用url_for的好处
from flask import Flask,render_template app = Flask(__name__) @app.route('/') def index(): return re ...
- No repository found containing: …错误解决
由于我安装的是Eclipse ForJava Development,无JAVA EE,查找资料后发现可以自己在已有软件的基础上配置,总结如下: >>>>>点开之后,找到 ...
- C语言课程程序设计
项目名称和目标 项目为基于EasyX库的RPG游戏,目标能实现控制游戏主角自由移动,能与NPC对话交互. 我组目前还未确定具体项目名称 项目主体功能 项目的主体功能具有一个游戏所拥有的完整功能,包括但 ...
- HDU 1042 N!(高精度阶乘、大数乘法)
N! Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submi ...
- BZOJ 1053 反素数 题解
题面 引理1: 1~n中的最大反质数,就是1~n中约数个数最多的数中最小的一个(因为要严格保证g(x)>g(i)): 引理2:1~n中任何数的不同因子不会超过10个,因为他们的乘积大于2,00 ...
- 数位dp(二进制01问题)
http://poj.org/problem?id=3252 题意:给你一个区间,求区间有多少个满足条件的数.条件是:把该数转为二进制后,如果0的数量大于等于1的数量,则为满足条件的数量. 题解:数位 ...
- Javaweb实训-宠物医院-社区宠物医院登陆页面
<%-- Created by IntelliJ IDEA. User: Administrator Date: 2018/3/13 Ti ...
- Java学习:identityHashCode和hashCode方法
System类提供了一个identityHashCode(Object x)方法,这个方法返回的是指定对象的精确hashCode值,也就是根据该对象的地址计算得到的hashCode值. 当某个类的ha ...
- TCPcopy环境搭建
参考文档:https://github.com/session-replay-tools/tcpcopy 辅助机器Assistant Server: 1.下载最新版本 git clone git:// ...