https://www.acmicpc.net/problem/19637
import sys
input = sys.stdin.readline
n, m = map(int, input().split()) # 칭호 개수, 캐릭터 개수
styles = []
# 칭호와 최대 전투력 입력
for _ in range(n):
style_name, style_maximum = input().split()
styles.append((style_name, int(style_maximum)))
for _ in range(m):
power = int(input())
start, end = 0, n - 1
result = ""
while start <= end:
mid = (start + end) // 2
# 뒤에서부터 앞으로 갱신하므로 중복이어도 가장 앞쪽의 칭호만 선택되도록 되어있음!
if styles[mid][1] >= power:
result = styles[mid][0] # 조건을 만족하는 칭호 저장
end = mid - 1 # 더 작은 범위 탐색
else:
start = mid + 1 # 더 큰 범위 탐색
print(result)
'백준' 카테고리의 다른 글
백준 7785. 회사에 있는 사람 (0) | 2025.01.05 |
---|---|
백준 15989. 1, 2, 3 더하기 4 (0) | 2024.12.26 |
백준 3758. KCPC (0) | 2024.12.21 |
백준 2607. 비슷한 단어 (0) | 2024.12.19 |
백준 19941. 햄버거 분배 (0) | 2024.12.15 |