在我们参加的信息学竞赛中,允许并列的排名方式是经常遇到的。
例如有四名选手的成绩分别为50、80、50、30分,则80分的选手为第一名,50分的两名选手均为第二名,30分的选手为第四名。
请编写一个程序,计算一个选手在这种排名方式之下的名次(分数高的选手排前面)。
输入格式
第一行为一个整数n,表示参赛的选手数,1<=n<=100 ,第二行为n个整数,表示每位选手的成绩,第三行为一个整数x,表示要查询的选手的成绩(成绩值<=100)。
输出格式
只有一个整数,表示该选手的名次。
输入/输出例子1
输入:
4
50 80 50 30
50
输出:
2
样例解释
无
#include<bits/stdc++.h>
using namespace std;
bool cop(int a,int b){
return a>b; //让sort函数从小到大进行排序
}
int main(){
int n,a[105],x,s;
cin >> n;
for(int i = 0; i < n; i++) cin >> a[i];
sort(a,a+n,cop);//sort排序
cin >> x;
for(int i = 0; i < n; i++){
if(a[i] == x){ //搜索到了一样的代码
s = i+1;//直接赋值最前的x名次,i+1是因为i是从0开始的
break;
}
}
cout << s;
return 0;
}
好了,今天的分享到此结束,希望你给我一个点赞关注加评论