점수 계산은 a * (d + g)로 진행
+
a = (d+g)의 경우에는 원래 얻을 점수의 두 배로 계산
- 제목
Triathlon
- 조건
시간 제한 : 1 초
메모리 제한 : 512 MB
- 문제
트라이애슬론(Triathlon)이란 라틴어에서 3가지라는 의미를 가진 tri와 경기를 뜻하는 athlon의 합성어이다. 우리나라에서는 트라이애슬론 대신 철인 3종 경기로 알려져 있다.
트라이애슬론은 여러 종류가 있으며 대표적으로 올림픽에서의 트라이애슬론은 각각 주어진 구간만큼 수영하고, 사이클을 타며, 마지막으로 마라톤을 하게 된다.
알고리즘에서도 트라이애슬론이 존재하는데, 처음 알고리즘 트라이애슬론을 고안한 폰 예스이만이 적은 문서에는 다음과 같은 경기 규칙이 적혀있다.
대회는 17시간 동안 진행하며 문제의 수는 최소 30문제이다.
각 문제의 유형은 애드혹, 다이나믹 프로그래밍, 그리디 알고리즘 중에서 최소 하나의 유형이 들어가야 한다.
점수 계산은 자유롭게 정해도 되지만, 애드혹 문제 해결의 비중을 높게 잡아야 한다.
2157년 폰 예스이만을 기념하는 의미로 알고리즘 트라이애슬론이 처음 개최되었다. 점수 계산 방식은 다음과 같다.
a, d, g는 각각 애드혹, 다이나믹 프로그래밍, 그리디 알고리즘 문제 해결을 통해 얻은 점수이다.
점수 계산은 a * (d + g)로 진행한다.
a = (d+g)의 경우에는 원래 얻을 점수의 두 배로 계산한다.
이제 대회가 끝나고 시상식을 할 차례이다. 우승자를 가리기 위해 참가자들이 받은 점수 중에서 가장 높은 점수를 구해보자.
- 입력
첫 번째 줄에 참가자의 수 N이 주어진다. (1 ≤ N ≤ 1,000)
다음 N개의 줄에 각 참가자의 점수 a, d, g가 공백으로 구분되어 주어진다.
a는 애드혹 문제 해결을 통해 얻은 점수이다. (0 ≤ a ≤ 10,000)
d는 다이나믹 프로그래밍 문제 해결을 통해 얻은 점수이다. (0 ≤ d ≤ 10,000)
g는 그리디 알고리즘 문제 해결을 통해 얻은 점수이다. (0 ≤ g ≤ 10,000)
a, d, g는 모두 정수이다.
- 출력
첫 번째 줄에 참가자들이 받은 점수 중에서 가장 높은 점수를 출력한다.
예제 입력1 | 예제 출력1 |
5 1 0 1 5 2 3 5 5 4 0 1 4 3 7 2 |
50 |
#include <iostream>
#include <algorithm>
#include <string>
#include <queue>
#include <map>
using namespace std;
#define fastio ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define endl '\n'
int main() {
fastio;
int tc, a, d, g;
cin >> tc;
int max = 0;
while(tc--){
int sum = 0;
cin >> a >> d >> g;
if((d + g) == a) sum += a * (d + g);
sum += a * (d + g);
if(max < sum) max = sum;
}
cout << max << endl;
return 0;
}
'Problem Solving > BaekJoon' 카테고리의 다른 글
[BOJ/백준] 3733 - Shares (0) | 2022.09.19 |
---|---|
[BOJ/백준] 25624 - SNUPTI (0) | 2022.09.17 |
[BOJ/백준] 25625 - 샤틀버스 (0) | 2022.09.17 |
[BOJ/백준] 1193 - 분수찾기 (0) | 2022.09.16 |
[BOJ/백준] 6566 - 애너그램 그룹 (0) | 2022.09.16 |