※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 21666번 문제인 Треугольник Максима이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/21666
21666번: Треугольник Максима
Первая строка входного файла содержит целое число n – количество нот, которые воспроизводил Максим с помощью тюнера (2 ≤ n ≤ 1000). Последующие
www.acmicpc.net
어떤 수 X가 두 수 A와 B중 어느쪽 수와 더 가까운지를 나타내는 정보를 이용해 가능한 X값의 범위를 추려내는 문제이다.
A와 B가 다르다면, mid := (A+B)/2의 값을 기준으로 더 가까운 쪽 수의 방향으로 범위에 대한 단서를 얻을 수 있다. 이러한 단서를 모아 문제를 해결하자.
A와 B의 값이 같다면 이 때 주어지는 정보는 아무런 의미가 없음에, 즉 아무런 처리도 안하고 건너뛰어야 함에 유의하자.
아래는 제출한 소스코드이다.
#include <iostream>
#include <string>
using namespace std;
typedef long double ld;
ld L = 30, R = 4000;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout << fixed;
cout.precision(20);
int T; cin >> T;
ld old; cin >> old;
for (int t = 1; t < T; t++) {
ld cur; string s; cin >> cur >> s;
if (old == cur) continue;
if (s == "closer") {
if (cur < old) {
R = min(R, (cur + old) / 2);
}
else L = max(L, (cur + old) / 2);
}
else {
if (cur < old) L = max(L, (cur + old) / 2);
else R = min(R, (cur + old) / 2);
}
old = cur;
}
cout << L << ' ' << R;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 27261 // C++] Номера по диагонали (0) | 2023.01.31 |
---|---|
[BOJ 27325 // C++] 3 つの箱 (Three Boxes) (0) | 2023.01.31 |
[BOJ 9924 // C++] The Euclidean Algorithm (0) | 2023.01.31 |
[BOJ 27323 // C++] 長方形 (Rectangle) (0) | 2023.01.31 |
[BOJ 27324 // C++] ゾロ目 (Same Numbers) (0) | 2023.01.31 |