站外题目
【问题描述】
在我们参加的各种竞赛中,允许并列的排名方式是经常遇到的。
例如有四名选手的成绩分别为50、80、50、30分,则80分的选手为第一名,50分的两名选手均为第二名,30分的选手为第四名。
请编写一个程序,计算一个选手在这种排名方式之下的名次(分数高的选手排前面)。
【输入文件】
文件第一行为一个整数 ,表示参赛的选手数, ,第二行为 个整数,表示每位选手的成绩,第三行为一个整数 ,表示要查询名次的选手的成绩。
【输出文件】
文件中只有一个整数,表示该选手的名次。
【样例输入】
4
50 80 50 30
50
【样例输出】
2
我的代码:
#include<bits/stdc++.h>
using namespace std;
int n,a[10000],b;
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
cin>>b;
sort(a,a+n);
for(int i=1;i<n;i++){
if(a[i]==a[i-1])a[i]=99999;
}
sort(a,a+n);
for(int i=0;i<n;i++){
if(a[i]==b)cout<<i+1;
}
return 0;
}