본문 바로가기

PS

[ 백준 / C++ ] 1205 : 등수 구하기

[ 문제 ]

 

1205번: 등수 구하기

 

[ 접근방법 ]

 

먼저 새로운 점수가 랭킹 리스트에 올라갈 수 있는지 판별한다 ( cnt1 ).

 

그 후, 랭킹 리스트에 몇 등으로 올라가는지 구한다 ( cnt2 ).

 

[ 소스코드 ]

 

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int n, s, p;
vector<int> score;

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);

    cin >> n >> s >> p;

    score.resize(n);
    for (int i = 0; i < n; i++)
    {
        cin >> score[i];
    }
    score.push_back(s);

    sort(score.begin(), score.end(), greater<int>());

    int cnt1 = upper_bound(score.begin(), score.end(), s, greater<int>()) - score.begin();
    int cnt2 = lower_bound(score.begin(), score.end(), s, greater<int>()) - score.begin() + 1;

    cout << (cnt1 > p ? -1 : cnt2);

    return 0;
}