题目描述
科丁市正在组织"相约春天"舞蹈比赛,鼓励全面参与。N名选手会按照抽签顺序依次进行表演,表演后会有5名评委依次为这位选手打分(满分100分,评委们的打分是0到100之间的实数),那么这名选手的最后得分就是所有评委打分的平均分向下取整的结果。
现在组委会想让你编写一个实时排名的系统,每当一个选手表演完成后,系统需要根据评委的打分实时的计算出这名选手的得分,并实时的告知选手他目前的排名以及目前排名前三的选手的得分。得分越高,排名就越靠前。
输入格式
第一行,一个整数N,表示参赛的选手总数,5≤N≤300
接下来N行,每行给出5个用空格隔开的实数,分别是5名评委为第i位表演的选手的打分成绩
输出格式
输出2*N行,每个选手输出两行,对于每个选手:
第一行输出选手的编号以及最终得分,输出格式参考输出样例
第二行是4个用空格隔开的整数,第1个整数表示第i位选手表演完后他当前的总排名,后面三个整数分别表示当前排名前三的选手的成绩。
注意,如果有多名选手成绩相同则他们的排名也是并列相同的。例如目前有三名选手,成绩分别是98 98 95,那么得分98的选手是并列第一,得分95的选手是排名第二
输入输出样列
输入样例1:复制
5 89.5 90 92.5 89 93.5 95 94.8 97 93.5 96 89.5 90.5 91.5 93.5 96 87.4 86.9 88.5 89 83.5 90.2 89.3 92 89.5 93.5
输出样例1:复制
Player 1: 90 1 90 Player 2: 95 1 95 90 Player 3: 92 2 95 92 90 Player 4: 87 4 95 92 90 Player 5: 90 3 95 92 90
输入样例2:复制
8 78.5 88.4 85.5 83.5 90.5 77.5 91.5 88.5 87.5 86.5 81.5 80.5 79.5 82.5 81.5 88.5 87.5 86.5 87.5 88.5 91.5 93.5 91.3 93.5 92.5 88.5 86.5 87.5 88.5 87.5 95.5 97.5 95.5 96.5 95.5 79.5 87.5 85.5 84.5 89.5
输出样例2:复制
Player 1: 85 1 85 Player 2: 86 1 86 85 Player 3: 81 3 86 85 81 Player 4: 87 1 87 86 85 Player 5: 92 1 92 87 86 Player 6: 87 2 92 87 86 Player 7: 96 1 96 92 87 Player 8: 85 5 96 92 87
说明
【样例一说明】
第1位选手表演完后,他的成绩是90分,目前排名第一,排名前三的成绩分别是90
第2位选手表演完后,他的成绩是95分,目前排名第一,排名前三的成绩分别是95 90
第3位选手表演完后,他的成绩是92分,目前排名第二,排名前三的成绩分别是95 92 90
第4位选手表演完后,他的成绩是87分,目前排名第四,排名前三的成绩分别是95 92 90
第5位选手表演完后,他的成绩是90分,目前排名第三,排名前三的成绩分别是95 92 90,并列第3
【耗时限制】1000ms 【内存限制】128MB
上代码
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <string>
#include <algorithm>
using namespace std;
int cnt[105];
int main(){
int n,t;
cin>>n;
double a,b,c,d,e,sum=0;
for(int i=1;i<=n;i++){
sum=0;
cin>>a>>b>>c>>d>>e;
sum=a+b+c+d+e;
int x=sum/5.0,ans=0;
cnt[x]++;
for(int j=100;j>=x;j--){
if(cnt[j]!=0){
ans++;
}
}
printf("Player %d: %d\n%d ",i,x,ans);
int t=0;
for(int j=100;j>=0;j--){
if(cnt[j]!=0){
cout<<j<<" ";
t++;
if(t==3){
break;
}
}
}
cout<<endl;
}
return 0;
}