# 뿅망치에 맞은 경우 키가 반으로 줄어듬. 1인 경우 제외.
# 매번 가장 큰 수를 줄인다. => 최대값을 찾아야 함. 최대 힙 사용.
# t번 망치를 사용했을때 모든 값이 센티의 키보다 작다면 yes, 뿅망치 최소 사용 횟수 작성
# 모든 횟수를 다 써도 안되면 no, 최대값 출력
from heapq import *
import sys
n, h, t = map(int, input().split())
titan_h = [-int(sys.stdin.readline()) for _ in range(n)] # 최대힙 사용을 위해 음수로 바꿔줌
heapify(titan_h)
cnt = 0
for i in range(t):
if -titan_h[0] == 1 or -titan_h[0] < h: # 만약 거인들의 키를 더이상 줄일 수 없거나 제일 큰 거인이 센티보다 작다면
break # 반복문 중지
else: # 거인들이 센티보다 크다면
heapreplace(titan_h, -(-titan_h[0] // 2)) # 제일 큰 거인의 키를 줄이고 다시 추가
cnt += 1 # 뿅망치 사용횟수 증가
if -titan_h[0] >= h: # 뿅망치를 다 써도 거인이 더 큰 경우
print('NO', -titan_h[0], sep='\n')
else: # 센티가 제일 커진 경우
print('YES', cnt, sep='\n')
https://www.acmicpc.net/problem/19638
'study > Algorithm' 카테고리의 다른 글
[백준] 파이썬 7562번: 나이트의 이동 (0) | 2024.04.09 |
---|---|
[백준] 파이썬 10026번: 적록색약 (0) | 2024.04.09 |
[백준] 파이썬 2304 : 창고 다각형 (0) | 2024.04.09 |
[백준] 파이썬 2108 : 통계학 (0) | 2024.04.09 |
[백준] 파이썬 1072 : 게임 (0) | 2024.04.09 |