※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 24933번 문제인 Quadratic Dissonance이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/24933 

 

24933번: Quadratic Dissonance

Input consists of a single line containing four integers $A,B,C,D$, each lying in the range $[-1000,1000]$.

www.acmicpc.net

문제에서 주어지는 함수의 최솟값을 가질 수 있는 후보 x좌표는 각 이차함수가 최솟값을 갖는 x좌표 x1과 x2, 그리고 (존재한다면) 두 그래프의 교점 x3이다.

 

두 그래프의 교점은 A와 C가 서로 다르다면 존재하고, 간단한 일차방정식을 풀어 계산해낼 수 있다.

 

각 점에서의 함숫값을 계산해, 가장 작은 함숫값을 가진 좌표를 출력해주자.

 

아래는 제출한 소스코드이다.

#include <iostream>
#include <string>
using namespace std;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	
	cout << fixed;
	cout.precision(10);

	int A, B, C, D; cin >> A >> B >> C >> D;
	double x1 = -0.5 * A, x2 = -0.5 * C, x3;
	if (A == C) x3 = -0.5 * A;
	else x3 = (double)(D - B) / (double)(A - C);
	double val1 = max(x1 * x1 + A * x1 + B, x1 * x1 + C * x1 + D);
	double val2 = max(x2 * x2 + A * x2 + B, x2 * x2 + C * x2 + D);
	double val3 = max(x3 * x3 + A * x3 + B, x3 * x3 + C * x3 + D);
	if (val1 < val2 && val1 < val3) cout << x1 << ' ' << val1;
	else if (val2 < val1 && val2 < val3) cout << x2 << ' ' << val2;
	else cout << x3 << ' ' << val3;
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 21213 // C++] Mentors  (0) 2022.05.04
[BOJ 18405 // C++] 경쟁적 전염  (0) 2022.05.03
[BOJ 25001 // C++] Pen  (0) 2022.05.01
[BOJ 24999 // C++] Prom  (0) 2022.05.01
[BOJ 24867 // C++] Два станка  (0) 2022.05.01

+ Recent posts