https://www.acmicpc.net/problem/23246
문제 풀이
compare함수를 이용해 sort를 할 때 곱한 점수, 더한 점수를 고려해 sort를 해주었다.
vector에는 id,(곱한점수, 더한점수)를 저장했다.
소스 코드
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<pair<int, pair<int, int>>> player;
bool compare(pair<int, pair<int, int>> a, pair<int, pair<int, int>>b) {
if (a.second.first < b.second.first) {
return true;
}
else if (a.second.first == b.second.first) {
if (a.second.second < b.second.second)
return true;
else if (a.second.second == b.second.second) {
if (a.first < b.first)
return true;
else
return false;
}
return false;
}
else
return false;
}
int main() {
int n;
cin >> n;
//입력을 받는 작업
for (int i = 0; i < n; i++) {
int p, q, r, z;
cin >> p >> q >> r >> z;
int mul = q * r * z;
int sum = q + r + z;
player.push_back(make_pair(p, make_pair(mul, sum)));
}
//compare를 이용한 정렬
sort(player.begin(), player.end(), compare);
//출력
for (int i = 0; i < 3; i++) {
cout << player[i].first << '\n';
}
}
'알고리즘' 카테고리의 다른 글
[백준] 20040번 사이클 게임 C++ 문제풀이 (0) | 2023.10.05 |
---|---|
[백준] 20044번 Project Teams C++ 문제풀이 (0) | 2023.10.03 |
[백준] 23247번 Ten C++ 문제풀이 (0) | 2023.09.29 |
[백준] 25953번 템포럴 그래프 C++ 문제풀이 (0) | 2023.09.23 |
[백준] 25945번 컨테이너 재배치 C++ 문제풀이 (0) | 2023.09.23 |