当前位置: 代码迷 >> 综合 >> 1051: 奥运会跳水比赛
  详细解决方案

1051: 奥运会跳水比赛

热度:4   发布时间:2023-12-06 05:24:35.0

 

//
输入输入有多行。第一行是球队数量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

// 目的导向 可能存在干扰条件 先看要求可适当规避// 男女 分别有 六个和五个 无难度系数限制的 自选动作 // 以及 各有五个 有难度系数限制的 自选动作// 其难度系数的总和 不得超过9.5
// 先删去 最高和最低的 无效分
// 余下3名 裁判员的 分数之和 乘以 运动员所跳动作的 难度系数
// 姓名(不含空格,长度不超过30个字符)
// 名次、姓名 和 该轮比赛的得分(各个运动员的得分保证都不相同,结果保留1位小数)
// 数据间用一个空格分开,每行末尾没有空格

//
#include<bits/stdc++.h>
using namespace std;// (1<n<=10)
// (0<=评分<=10),最后一个浮点数表示难度系数,数据间以空格分开
const int N=22;
const int LEN=55;
const int SCORE=10;typedef struct player { char name[LEN]; double score; }P; P in[N];bool cmp( P a,P b ) { return a.score > b.score ; }int main()
{double t[11];double sum,rank;int n,i,j;while( ~scanf("%d",&n) ){for( i=1;i<=n;i++ ){scanf("%s",in[i].name);for( j=1;j<=5;j++ ) scanf("%lf",&t[j]);sort( t+1,t+5+1 ); sum=t[2]+t[3]+t[4];      // 不带 []scanf("%lf",&rank); in[i].score=sum*rank;}sort( in+1,in+n+1,cmp );for( i=1;i<=n;i++ ) printf("%d %s %.1lf\n",i,in[i].name,in[i].score );}return 0;
}