PS

x와 가장 가까운 수 y 찾기

yunny_world 2022. 12. 26. 19:27

x와 가장 가까운 수 y의 후보는 

  • x보다 큰 수 중 최소
  • x보다 작은 수 중 최대

이므로

  • lower_bound 결과
  • 그보다 하나 앞에 것

만 비교해서 작은 것을 뽑으면 O(logn)에 x와 가장 가까운 수 y를 찾을 수 있다.


ll x, y;
ll dist = INF;
vector<ll> v;

auto i = lower_bound(v.begin(), v.end(), x);
if (i != v.end()) if (*i - x < dist)
{
	dist = *i - x;
	y = *i;
}
if (i != v.begin()) if (*(--i) - x < dist)
{
	dist = *i - x;
	y = *i;
}

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

(Connecting Two Barns)

이 문제를 풀고 기록해두면 좋을 것 같아 기록해둔다.

'PS' 카테고리의 다른 글

순열과 그 인덱스 배열 간의 관계  (4) 2023.01.25
[BOJ] 9466번 : 텀 프로젝트  (0) 2023.01.12
[BOJ] 9946번 : 아이템 제작  (4) 2022.12.23
22/12/04 PS  (2) 2022.12.04
[BOJ] 18240번 : 이진 탐색 트리 복원하기  (0) 2022.11.18