1051: 奥运会跳水比赛
时间限制: 1 Sec 内存限制: 128 MB
题目描述
跳水项目起源于游泳运动的发展过程中,它是一项优美的水上运动,它是从高处用各种姿势跃入水中或是从跳水器械上起跳,在空中完成一定动作姿势,并以特定动作入水的运动。
跳板跳水是奥运会跳水比赛中的一个项目,男女分别有六个和五个无难度系数限制的自选动作以及各有五个有难度系数限制的自选动作,其难度系数的总和不得超过9.5。在比赛中,5名裁判员根据运动员对每个动作的完成情况进行评分,裁判员打出分数以后,先删去最高和最低的无效分,余下3名裁判员的分数之和乘以运动员所跳动作的难度系数,便得出该动作的最终得分。现给出了多个运动员在某届奥运会中,某一轮比赛的打分情况,请你帮忙计算出各个运动员本轮比赛的最终得分并按照得分给出运动员们的暂时的排名吧!
输入
输入有多行。第一行是球队数量n(1<n<=10)接下来有n行,每行数据包含运动员的姓名(不含空格,长度不超过30个字符)和5个浮点数,分别表示5个裁判的评分(0<=评分<=10),最后一个浮点数表示难度系数,数据间以空格分开。
输出
输出运动员们按照完成本轮比赛的得分的排名情况(保证所有运动员们的得分各不相同) ,每行输出每个运动员的名次、姓名和该轮比赛的得分(各个运动员的得分保证都不相同,结果保留1位小数),数据间用一个空格分开,每行末尾没有空格。
样例输入 Copy
3
Qiubo 8.5 7.5 9 8 9.5 3.2
Boudia 8 8.5 9 9.5 8.5 3.0
Linyue 9 9.5 9.6 8 8.5 3.6
样例输出 Copy
1 Linyue 97.2
2 Qiubo 81.6
3 Boudia 78.0
使用结构体记录每个选手的信息
重写sort的compare函数实现按照成绩的降序排列选手
#include <iostream>
#include <string>
#include <string.h>
#include <algorithm>
#include <cstdio>
using namespace std;
struct sport{
string name;
float x[5];
float y;
float sum;
}s[15];
bool comp(const sport& a,const sport& b){
return a.sum>b.sum;
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>s[i].name>>s[i].x[0]>>s[i].x[1]>>s[i].x[2]>>s[i].x[3]>>s[i].x[4]>>s[i].y;
sort(s[i].x,s[i].x+5);
s[i].sum=(s[i].x[1]+s[i].x[2]+s[i].x[3])*s[i].y;
}
sort(s,s+n,comp);
for(int i=0;i<n;i++){
cout<<i+1<<" "<<s[i].name<<" ";
printf("%.1f\n",s[i].sum);
}
return 0;
}