시험 보기

시간 제한1초메모리 제한128 MB

요약
N개의 참/거짓 문제와 가능한 참의 개수 집합이 주어질 때, 최악의 경우에도 맞는 개수를 최대로 만드는 답안을 정한다.
난이도

어려움10점 중 8점

유형
수학, 그리디, 구현, 정렬
정답자
아직 제출이 없습니다

문제

농부 존은 매년 치르는 영농 자격 시험을 봐야 한다. 시험은 참/거짓으로 답하는 NN개의 문제로 이루어져 있다 (1≤N≤1,000,0001 \le N \le 1{,}000{,}000). 지난해 성적이 좋지 않았던 존을 위해 소 베시가 돕기로 한다.

베시는 내부 정보를 가지고 있다. 정답이 '참'인 문제의 개수가 반드시 t1,t2,…,tKt_1, t_2, \dots, t_K 중 하나라는 것이다 (0≤ti≤N0 \le t_i \le N; 0≤K≤10,0000 \le K \le 10{,}000). 다만 베시는 개별 문제의 정답이 무엇인지는 전혀 모르고, '참'인 문제의 총 개수가 될 수 있는 값들만 알고 있다.

존은 모든 문제에 '참' 또는 '거짓'으로 답을 적는다. 존은 특정 문제의 정답을 전혀 모르므로, 상대는 실제 '참'의 개수(베시가 알려 준 값들 중 하나)와 그것이 구체적으로 어떤 문제들인지를 존의 점수가 최소가 되도록 마음대로 정할 수 있다. 존은 어떤 경우에도 반드시 맞힐 수 있는 정답 수가 최대가 되도록 답을 고르려 한다.

예를 들어 N=6N = 6이고 '참'인 문제의 개수가 00 또는 33이라고 하자. 존이 모든 문제를 '거짓'으로 답하면, 개수가 00일 때 66개를 모두 맞히고 개수가 33일 때 33개를 맞히므로 최소 33개가 보장된다. 반대로 어떤 33개를 '참'이라고 찍으면, 상대가 그 33개를 모두 틀리게 만들 수 있어 보장 점수가 00으로 떨어진다. 따라서 모두 '거짓'으로 답하는 편이 낫고, 이때 33개가 보장된다.

베시의 정보가 주어질 때, 존이 최적으로 답했을 때 반드시 맞힐 수 있는 정답 개수의 최댓값을 구하라.

입력

  • 첫째 줄: 공백으로 구분된 두 정수 NN과 KK.
  • 둘째 줄부터 K+1K+1째 줄까지: i+1i+1째 줄에는 정수 tit_i가 하나씩 주어진다.

(K=0K = 0이면 이후 줄은 없다.)

출력

  • 한 정수: 존이 반드시 맞힐 수 있는 정답 개수의 최댓값.

예제2

  1. 예제 1

    입력
    6 2
    0
    3
    
    예상 출력
    3
    
  2. 예제 2

    입력
    100 1
    40
    
    예상 출력
    60