오름차 순으로 정렬해주어야 한다.
N은 P보다 무조건 작거나 같기에 등수를 위에서부터 자르는 문제가 아니다.
나보다 높은 사람만이 내 위로 갈 수 있다.
N이 P와 같을 경우 마지막 수를 비교하면 된다. 내 점수보다 크거나 같은 경우 무조건 나는 순위권 밖이기에 -1을 출력한다.
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
ios::sync_with_stdio(0), cin.tie(0);
vector<int> rankList;
int N, newScore, P;
cin >> N >> newScore >> P;
for (int i = 0; i < N; ++i)
{
int num;
cin >> num;
rankList.push_back(num);
}
sort(rankList.begin(), rankList.end(), greater<int>());
if (N == P && rankList[N - 1] >= newScore)
{
cout << -1;
}
else
{
int cnt = 1;
for (int i = 0; i < N; ++i)
{
if (rankList[i] > newScore)
++cnt;
else
break;
}
cout << cnt;
}
}
N이 P보다 큰 경우가 없다는 것에 명심하면 된다.