Codeforces Round #748 (Div. 3)-A. Elections
falconlee236
·2021. 11. 24. 23:12
문제 설명
세 후보자가 지원한 선거가 방금 끝났다. 첫번째 후보자는 득표수가 $a$이고, 두번째 후보자는 득표수가 $b$이고, 세번째 후보자는 득표수가 $c$이다. 각 후보자에 대해서 다음 문제를 풀어보자. 각 후보자가 선거에서 승리하려면 몇개의 득표수를 더 받아야 할까? 즉 각 후보자가 다른 후보자들의 득표수 보다 크기 위한 득표수를 구해야 한다.
각 후보자에 대해 이 문제는 독립적으로 풀어야 한다는 것을 잊지 말자. 한 후보자가 우승하기 위해서 추가된 득표수는 다른 두 후보자가 우승하기 위해서 추가된 득표수를 구할때 반영되지 않는다.
Input
첫번째 줄에는 테스트 케이스의 개수를 나타내는 정수 $t (1 \le t \le 10^4)$ 이 주어진다.
각 테스트케이스의 첫번째 줄에는 세 정수 $a, b$ 그리고 $c (0 \le a,b,c \le 10^9)$ 이 주어진다.
Output
각 테스트케이스마다 각각 첫번째, 두번째, 세번째 후보자에 대한 문제의 답인 세 정수 $A, B$ 그리고 $C (A, B, C \le 0)$ 를 공백을 기준으로 출력한다.
Example
input
5
0 0 0
10 75 15
13 13 17
1000 0 0
0 1000000000 0
output
1 1 1
66 0 61
5 5 0
0 1001 1001
1000000001 0 1000000001
문제 접근
사용한 알고리즘: 수학
걸린 시간 : 00:01
DIV3의 A번 문제답게 쉽다. 이해가 안되도 예시 입력 데이터를 보면 바로 이해할 수 있다.
답을 구해야 하는 후보자를 제외한 나머지 두 후보자중 큰 수를 찾는다. 그리고 그 수에서 후보자의 득표수를 빼고 1을 추가하면 답을 구할 수 있다. 이때, 득표수를 추가할 필요가 없는 경우가 있다. 이 경우에서는 답이 음수가 나오기 때문에 max(0, ans)로 득표수를 추가할 필요가 없는 경우 0을 출력하게 하면 된다.
정답 코드
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
int main(){
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
int t; cin >> t;
while(t--){
int a, b, c; cin >> a >> b >> c;
cout << max(max(b, c) - a + 1, 0) << " ";
cout << max(max(a, c) - b + 1, 0) << " ";
cout << max(max(a, b) - c + 1, 0) << "\n";
}
}
'알고리즘 > codeforces' 카테고리의 다른 글
Codeforces Round #748 (Div. 3)-D1. All are Same (0) | 2021.11.25 |
---|---|
Codeforces Round #748 (Div. 3)-C. Save More Mice (0) | 2021.11.24 |
Codeforces Round #751 (Div. 2)-C. Array Elimination (0) | 2021.11.20 |
Codeforces Round #751 (Div. 2)-A. Two Subsequences (0) | 2021.11.20 |
Codeforces Round #745 (Div. 2)-C. Portal (0) | 2021.11.16 |