
1. 필요한 변수 선언
import java.io.*;
import java.util.*;
import java.lang.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] arr = br.readLine().split(" ");
int population = Integer.parseInt(arr[0]);
int height = Integer.parseInt(arr[1]);
int magicHammer = Integer.parseInt(arr[2]);
PriorityQueue<Integer> pq = new PriorityQueue(Collections.reverseOrder());
for (int i = 0; i < population; i++) {
pq.add(Integer.parseInt(br.readLine()));
}
StringBuilder rst = new StringBuilder();
2. 가장 높은 키가 센티의 키보다 작거나 1인 경우 멈춘다.
센티의 키보다 작거나 같은 경우 반으로 나누고 다시 큐에 넣어준다.
int used = 0;
for (int i = 0; i < magicHammer; i++) {
if (pq.peek() < height || pq.peek() == 1) {
break;
} else if (pq.peek() >= height) {
pq.add(pq.poll() / 2);
used++;
}
}
if (pq.peek() >= height) {
rst.append("NO\n" + pq.peek());
} else {
rst.append("YES\n" + used);
}
System.out.println(rst);
}
}