7-11 奥运排行榜(简洁AC+效率高)
每年奥运会各大媒体都会公布一个排行榜,但是细心的读者发现,不同国家的排行榜略有不同。比如中国金牌总数列第一的时候,中国媒体就公布“金牌榜”;而美国的奖牌总数第一,于是美国媒体就公布“奖牌榜”。如果人口少的国家公布一个“国民人均奖牌榜”,说不定非洲的国家会成为榜魁…… 现在就请你写一个程序,对每个前来咨询的国家按照对其最有利的方式计算它的排名。
输入格式:
输入的第一行给出两个正整数N和M(≤224,因为世界上共有224个国家和地区),分别是参与排名的国家和地区的总个数、以及前来咨询的国家的个数。为简单起见,我们把国家从0 ~ N−1编号。之后有N行输入,第i行给出编号为i−1的国家的金牌数、奖牌数、国民人口数(单位为百万),数字均为[0,1000]区间内的整数,用空格分隔。最后面一行给出M个前来咨询的国家的编号,用空格分隔。
输出格式:
在一行里顺序输出前来咨询的国家的排名:计算方式编号
。其排名按照对该国家最有利的方式计算;计算方式编号为:金牌榜=1,奖牌榜=2,国民人均金牌榜=3,国民人均奖牌榜=4。输出间以空格分隔,输出结尾不能有多余空格。
若某国在不同排名方式下有相同名次,则输出编号最小的计算方式。
输入样例:
4 4
51 100 1000
36 110 300
6 14 32
5 18 40
0 1 2 3
输出样例:
1:1 1:2 1:3 1:4
#include<iostream>
#include<algorithm>
using namespace std;
struct Country{int id,gold,medal,people;double pg,pm;
}a[225];
bool cmp_gold(Country x,Country y) { return x.gold > y.gold; }
bool cmp_medal(Country x,Country y) { return x.medal > y.medal; }
bool cmp_pg(Country x,Country y) { return x.pg > y.pg; }
bool cmp_pm(Country x,Country y) { return x.pm > y.pm; }
int g_[225],m_[225],p_1[225],p_2[225]; // 储存各个国家四种排名int main()
{int N,M,z,flag;cin >> N >> M;/* 数据输入 */for(int z=0;z<N;z++) {cin >> a[z].gold >> a[z].medal >> a[z].people;a[z].pg = a[z].gold * 1.0 / a[z].people;a[z].pm = a[z].medal * 1.0 / a[z].people;a[z].id = z;}/* 金牌榜计入 */sort(a,a+N,cmp_gold); for(z=0,flag=1;z<N;z++) {g_[a[z].id] = flag;if(a[z].gold != a[z+1].gold) flag = z+2;}/* 奖牌榜计入 */sort(a,a+N,cmp_medal);for(z=0,flag=1;z<N;z++) {m_[a[z].id] = flag;if(a[z].medal != a[z+1].medal) flag = z+2;}/* 金牌密度榜 */sort(a,a+N,cmp_pg);for(z=0,flag=1;z<N;z++) {p_1[a[z].id] = flag;if(a[z].pg != a[z+1].pg) flag = z+2;}/* 奖牌密度榜 */sort(a,a+N,cmp_pm);for(z=0,flag = 1;z<N;z++) {p_2[a[z].id] = flag;if(a[z].pm != a[z+1].pm) flag = z+2;}/* 开始查询 */for(z=0;z<M;z++){if(z>0) cout << " ";cin >> N;int max = g_[N],f_max=1;if(m_[N] < max) max = m_[N] ,f_max = 2;if(p_1[N] < max) max = p_1[N] , f_max = 3;if(p_2[N] < max) max = p_2[N] , f_max = 4;cout << max << ":" << f_max;}return 0;
}
7-11 奥运排行榜(简洁AC+效率高)相关推荐
- 小勇机器人充电头坏了_崇安区管道机器人CCTV-管道爬行机器人,武汉天仪ty333,优质效率高...
水上漂管道检测机器人无线/有线双用ty-G200 崇安区管道机器人CCTV-管道爬行机器人,武汉天仪ty333,优质效率高 天仪仪器公司管道机器人有9款,推荐给您: ty-150无线管道检测机器人(详 ...
- 灵魂拷问:用移位来代替除法运算真的效率高吗?Java 编译器到底有没有做除法优化?
目录 引入 C++ 编译器对除法的优化 Java 编译器对除法的优化 移位运算对应的字节码 除法操作对应的字节码 查看及分析 JIT 即时编译结果 1.手动编译 OpenJDK 2.编译 hsdis- ...
- 汇编语言比C51需要效率高,汇编语言与C51语言实现跑马灯实验的比较 -
当前开发单片机应用系统程序主要应用汇编语言和C51语言,采用汇编语言编写可直接操纵系统的硬件资源,能编写出高效运行的程序代码,程序运行速度快.而采用C51语言编写可改善程序的可读性和可移植性,利于产品 ...
- Qt:一个简洁漂亮的高仿网易云播放器
Qt:一个简洁漂亮的高仿网易云播放器 界面动图展示: 功能简述: 1.音乐的播放.暂停 2.音乐的上.下一曲 3.进度条显示进度.滑动条调整进度 4.音量的滑动调整 5.列表切换歌曲 6.播放.暂停的 ...
- python都学什么啊-那些效率高的人都在偷偷学什么?
原标题:那些效率高的人都在偷偷学什么? 提起潘石屹,你的印象是不是还停留在"SOHO中国"."房产大亨"的标签上?那你真是"图样图森破"! ...
- 1个顶11个?程序员效率差距的量化分析
1个顶11个?程序员效率差距的量化分析 在软件工程的经典<人月神话>中作者提出好的程序员和差的可以达到100倍的效率差别,我还没搞清怎么做到的,但是现实中,好的程序员与差的程序员完全可以达 ...
- 为什么 2 * (i * i) 比 2 * i * i 效率高?
问题 为什么 2 * (i * i) 比 2 * i * i 效率高? 执行如下代码时,平均完成时间在 0.50s 到 0.55s 之间: ublic static void main(String[ ...
- NL连接一定是小表驱动大表效率高吗
前言 两表使用nest loop(以下简称NL)方式进行连接,小表驱动大表效率高,这似乎是大家的共识,但事实上这是有条件的,并不总是成立.这主要看大表扫描关联字段索引后返回多少数据量,是否需要回表,如 ...
- case when 效率高不高_南京薄蜂窝纸板效率高
目前国产的瓦楞纸板都不同程度地存在起泡现象,它在很大程度上影响了瓦楞纸板的质量,若每平方米脱胶部分面积之和大于500px~2,则纸板为不合格产品,因此,有效地控制和脱胶和起泡缺陷,对生产企业提高产品质 ...
最新文章
- 【Java】MD5字符串的加密解密
- boost::hana::detail::wrong用法的测试程序
- ACM Doing Homework again
- 解析java源代码_一步步解析java执行内幕
- html多级折叠菜单表单,JS实战篇之收缩菜单表单布局
- Tether已在以太坊扩容方案Hermez Network上发行USDT
- OpenCVQt学习之一——打开图片文件并显示
- 让驰骋工作流程引擎 ccbpm使用自定义表单来实现自己的业务逻辑.
- Java JDK 8的安装与配置
- VISA 通信command总结
- FMEA-MSR步骤五:风险分析(二)
- 有线路由器后接无线路由器
- Windows Server 2012 R2 更改系统语言
- 【C生万物】 函数递归篇
- Telegram图文详解-- 编程机器人(谷歌脚本服务)
- Dual Super-Resolution Learning for Semantic Segmentation解读
- 挑战华为社招:2021Java高级面试题汇总解答
- CY7C68013A在WIN7下64位的USB驱动程序安装过程
- MATLAB 相机标定中标定板角点像素坐标系到世界坐标系的转换
- 编译mbedtls (mingw方式)