수 맞히기 게임
시간 제한1초메모리 제한256 MB
NO 답변은 a유로, YES 답변은 b유로 내는 부분집합 질문으로 1부터 n까지 숨겨진 정수를 찾고 최악의 총 지불액을 최소화합니다.
문제
존과 조지가 다음 게임을 한다. 존은 집합 에서 정수 하나를 고르고, 조지는 그 가 무엇인지 알아내야 한다. 게임은 번째 차례로 이어진다. 번째 차례에 조지가 의 부분집합 를 고르면, 존은 가 에 들어 있으면 YES, 아니면 NO라고 답한다. 답이 NO면 조지는 존에게 유로를 내고, YES면 유로를 낸다.
조지는 답을 하나 들을 때마다 그 답을 보고 다음 부분집합을 정할 수 있다. 가 무엇이든 반드시 알아내는 전략 중에서 조지가 내는 금액의 최댓값이 가장 작은 전략을 찾고, 그때의 금액을 구하는 프로그램을 작성하라.
입력
첫 줄에 정수 , , 가 공백으로 구분되어 주어진다.
출력
조지가 내야 하는 최소 금액을 정수 하나로 출력한다.
제한
힌트
, , 이면 조지는 4유로로 를 알아낼 수 있다.
조지가 먼저 를 고른다.
- 존이 YES라고 답하면 조지는 2유로를 내고 을 고른다. 다시 YES면 2유로를 더 내고 게임이 끝난다(). NO면 1유로를 더 내고 게임이 끝난다().
- 존이 NO라고 답하면 조지는 1유로를 내고 을 고른다. YES면 2유로를 더 내고 게임이 끝난다(). NO면 1유로를 더 내고 를 고른다. YES면 2유로를 더 내고 게임이 끝난다(). NO면 1유로를 더 내고 게임이 끝난다().
가장 많이 내는 경우는 일 때와 일 때이고, 두 경우 모두 4유로다.