시험 보기
시간 제한1초메모리 제한128 MB
N개의 참/거짓 문제와 가능한 참의 개수 집합이 주어질 때, 최악의 경우에도 맞는 개수를 최대로 만드는 답안을 정한다.
문제
농부 존은 매년 치르는 영농 자격 시험을 봐야 한다. 시험은 참/거짓으로 답하는 개의 문제로 이루어져 있다 (). 지난해 성적이 좋지 않았던 존을 위해 소 베시가 돕기로 한다.
베시는 내부 정보를 가지고 있다. 정답이 '참'인 문제의 개수가 반드시 중 하나라는 것이다 (; ). 다만 베시는 개별 문제의 정답이 무엇인지는 전혀 모르고, '참'인 문제의 총 개수가 될 수 있는 값들만 알고 있다.
존은 모든 문제에 '참' 또는 '거짓'으로 답을 적는다. 존은 특정 문제의 정답을 전혀 모르므로, 상대는 실제 '참'의 개수(베시가 알려 준 값들 중 하나)와 그것이 구체적으로 어떤 문제들인지를 존의 점수가 최소가 되도록 마음대로 정할 수 있다. 존은 어떤 경우에도 반드시 맞힐 수 있는 정답 수가 최대가 되도록 답을 고르려 한다.
예를 들어 이고 '참'인 문제의 개수가 또는 이라고 하자. 존이 모든 문제를 '거짓'으로 답하면, 개수가 일 때 개를 모두 맞히고 개수가 일 때 개를 맞히므로 최소 개가 보장된다. 반대로 어떤 개를 '참'이라고 찍으면, 상대가 그 개를 모두 틀리게 만들 수 있어 보장 점수가 으로 떨어진다. 따라서 모두 '거짓'으로 답하는 편이 낫고, 이때 개가 보장된다.
베시의 정보가 주어질 때, 존이 최적으로 답했을 때 반드시 맞힐 수 있는 정답 개수의 최댓값을 구하라.
입력
- 첫째 줄: 공백으로 구분된 두 정수 과 .
- 둘째 줄부터 째 줄까지: 째 줄에는 정수 가 하나씩 주어진다.
(이면 이후 줄은 없다.)
출력
- 한 정수: 존이 반드시 맞힐 수 있는 정답 개수의 최댓값.