상품 쿠폰
면접 대비시간 제한1초메모리 제한512 MB
학생마다 0개에서 3개의 쿠폰을 받고 자신이나 인접한 학생의 ID만 적을 수 있을 때, 쿠폰에 이름이 적힌 서로 다른 학생 수의 최댓값을 구한다.
문제
BINUS University에는 1번부터 N번까지 번호가 붙은 N명의 학생이 재학 중이다. 각 학생은 고유한 식별자(ID)를 하나씩 갖는다.
최근의 성과를 기념해 BINUS University는 학생들에게 쿠폰을 나눠 주려고 한다. i번 학생은 대학에서 쿠폰을 장 받았다. 받은 쿠폰마다 학생은 쿠폰 뒷면에 어떤 학생의 ID를 적어야 한다. 적는 ID는 자신의 것일 수도 있고 다른 학생의 것일 수도 있다. 다만 대학은 i번 학생이 j번 학생의 ID를 적으려면 i와 j의 차이가 1 이하여야 한다고 정했다. 즉 이다.
모든 학생이 쿠폰 뒷면에 학생의 ID를 적고 나면 대학이 쿠폰을 모두 회수한다. 그런 다음 대학은 자신의 ID가 적힌 쿠폰을 한 장 이상 가진 학생에게 상품을 준다.
예를 들어 이고 이라 하자.
- 첫 번째 학생은 쿠폰 두 장에 두 번째 학생의 ID를 적고, 남은 한 장에 첫 번째 학생의 ID를 적을 수 있다.
- 세 번째 학생은 쿠폰에 네 번째 학생의 ID를 적을 수 있다.
- 따라서 첫 번째, 두 번째, 네 번째 학생이 상품을 하나 이상 받는다.
학생들은 상품을 받는 서로 다른 학생 수가 최대가 되도록 ID를 적으려고 한다. BINUS University의 학생들은 이타적이기로 유명해서, 상품을 받을 학생 수를 늘릴 수 있다면 자신의 ID 대신 다른 학생의 ID를 적을 수도 있다.
상품을 받게 될 학생 수의 최댓값을 구하시오.
입력
첫 줄에 정수 ()이 주어진다. 이는 학생 수를 나타낸다. 다음 줄에 개의 정수 ()가 주어진다. 이는 받은 쿠폰 수를 나타낸다.
출력
상품을 받게 될 학생 수의 최댓값을 정수 하나로 출력한다.