코드
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#include <string>
#include <cmath>
#include <queue>
#include <map>
#include <set>
using namespace std;
int n, t, p, a[53];
map<int, int> mp;
map<int, int> check;
set<int> st;
void FASTIO() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
}
int main() {
FASTIO();
cin >> n >> t >> p;
if (n == 0) {
cout << 1 << '\n';
return 0;
}
mp[t]++;
for (int i = 1; i < n + 1; i++) {
cin >> a[i];
mp[a[i]]++;
}
int idx = n + 1;
int idx2 = 1;
for (int i = 1; i < 53; i++) {
if (a[i] < t) {
idx = i;
a[i] = t;
break;
}
}
int res = 0;
for (int i = 1; i < idx + 1; i++) {
if (check[a[i]] != 1) {
check[a[i]] = 1;
res += mp[a[i]];
}
}
res = res - mp[t] + 1;
if (idx > p) res = -1;
cout << res << '\n';
return 0;
}
풀이
동점 시에 랭킹이 밀리지 않는 것과, 이미 같은 점수가 같은 사람이 존재하고 등수가 가득 찼을 때를 생각해야 해서 꽤 헤맨 문제. 다른 풀이를 보면 점수를 넣고 정렬한 뒤에 등수랑 위치를 구하면 된다고 한다. 아이디어가 중요한 문제인 듯하다. 위 코드는 그냥 구현
'백준' 카테고리의 다른 글
[백준] 17484번 진우의 달 여행(Small) C++ 코드 (3) | 2024.11.11 |
---|---|
[백준] 20125번 쿠키의 신체 측정 C++ 코드 (0) | 2024.11.11 |
[백준] 2535번 아시아 정보올림피아드 C++ 코드 (0) | 2024.11.11 |
[백준] 28419번 더하기 C++ 코드 (0) | 2024.11.11 |
[백준] 3653번 영화 수집 C++ 코드 (2) | 2024.11.11 |