对 n 个同学的考试成绩从大到小排名,成绩相同的算同一名。求排名为 m 的成绩。
输入格式说明
一共两行 第一行:一个整数 n,表示同学的个数。 第二行:n 个整数,表示 n 个同学的成绩。 第三行:一个整数 m,表示排名。
输出格式说明
一个整数,表示排名为 m 的成绩。
数据范围
同学个数:[0, 100],成绩:[0, 100]。
输入样例
5
1 2 3 3 4
3
输出样例
2
说明
排名后为:4 3 2 1
。第一名成绩为 4,第二名成绩为 3, 第三名成绩为 2,第四名成绩为 1。
解题思路:
(1)利用容器来存放元素,然后排序,再删除重复的元素;
代码:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
vector<int> stu; //定义容器
int n;
cin>>n;
int score[n];
for(int i=0;i<n;i++){
cin>>score[i];
stu.push_back(score[i]); //压入容器中
}
sort(stu.begin(),stu.end(),greater<int>()); //对容器中的数据进行排序
stu.erase(unique(stu.begin(),stu.end()),stu.end()); //删除重复的元素
int num;
cin>>num;
cout<<stu[num-1];
return 0;
}