1014: 选美比赛

1014: 选美比赛

时间限制: 5 Sec  内存限制: 5 MB
提交: 311  解决: 223
[提交][状态][讨论版]

题目描述

在选美大奖赛的半决赛现场,有n名选手(2<n<100)参加比赛。比赛结束时,要在现场按照选手的出场顺序宣布最后名次,获得相同分数的选手具有相同的名次,名次连续编号,不用考虑同名次的选手人数。如:
选手数量:  7
选手得分:  5,3,4,7,3,5,6
宣布名次:  3,5,4,1,5,3,2
请编程帮助大奖赛组委会完成半决赛的评分排名工作。

 

 

输入

选手数量:7

 选手得分:5 3 4 7 3 5 6

 

输出

选手的排名:3 5 4 1 5 3 2

 

样例输入

7
5 3 4 7 3 5 6

样例输出

3 5 4 1 5 3 2

提示

 

本题的关键在于如何处理同分数的选手排名问题


 

 

来源

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
 int n,i,a[100],b[100],c[100]={0};
 cin>>n;
 for(i=0;i<n;i++){
  cin>>a[i];
  b[i]=a[i];
    }
  sort(b,b+n);
  for(i=0;i<n/2;i++){  //
   int temp;
   temp=b[i];
   b[i]=b[n-1-i];
   b[n-1-i]=temp;
  }
  c[b[0]]=1;
  for(i=1;i<n;i++){
   if(b[i]==b[i-1]){ 
    c[b[i]]=c[b[i-1]];
   }else{
    c[b[i]]=c[b[i-1]]+1;
   }
  }
  for(i=0;i<n;i++){
   if(i!=n-1)
   cout<<c[a[i]]<<" ";
   else
   cout<<c[a[i]]<<endl;
  }
  return 0;
}
posted @ 2016-08-17 19:33  知我者,足以  阅读(549)  评论(0编辑  收藏  举报