인접 학년이 교실을 함께 쓸 때 서로 수업할 수 없는 반 쌍을 버려야 하므로, 교실 m개로 최대한 많은 반을 배정하는 최댓값을 구한다.
보통7동적 계획법그래프이분 탐색그리디아직 제출이 없습니다시간 제한2초메모리 제한512 MB영선이가 다니는 sys학교는 자연재해를 겪어 일부 교실을 쓸 수 없게 되었다. 지금 쓸 수 있는 교실은 m개다. 학교에는 1학년부터 n학년까지 있고, i학년에는 반이 ai개 있다.
교실이 모자라서 한 학년의 모든 반은 한 교실에 몰아넣는다. 그래도 모자라면 교육 수준이 그나마 비슷한 인접한 두 학년의 모든 반을 한 교실에 넣는다. 예를 들어 2학년은 1학년이나 3학년 중 한쪽과 교실을 같이 쓸 수 있다.
같은 학년의 반끼리는 공통으로 듣는 과목이 있어서 한 교실에 들어가도 문제가 없다. 하지만 학년이 다르면 한 학년 차이라도 문이과 차이나 선택과목 차이 때문에 도저히 같이 수업을 들을 수 없는 반 쌍이 생긴다. 인접한 두 학년이 한 교실을 쓸 때, 같이 들을 수 없는 두 반 중 한쪽은 버려져서 교실을 배정받지 못한다.
형평성 때문에 두 학년이 한 교실을 쓰는 경우는 있어도 한 학년이 교실 두 개를 쓰는 경우는 없다. 결국 각 학년은 교실 하나를 혼자 쓰거나, 인접한 한 학년과 교실 하나를 같이 쓰거나, 교실을 아예 배정받지 못한다. 한 교실에 세 학년 이상이 들어가는 일도 없다.
교실 m개를 이렇게 배정할 때 교실을 배정받는 반의 개수를 최대로 만들려고 한다. 그 최댓값을 출력하시오.
첫째 줄에 학년 수 n과 쓸 수 있는 교실 수 m이 주어진다. (1≤n≤50, ⌊n/2⌋≤m≤n)
이어서 1학년부터 n학년까지 차례로 각 학년의 정보가 주어진다. 각 학년의 정보는 그 학년의 반 수 ai가 한 줄에 주어지는 것으로 시작한다. (1≤ai≤100)
i<n인 학년은 그 뒤에 ai개의 줄이 이어진다. 그중 j번째 줄은 i학년 j번 반이 i+1학년의 반 가운데 같이 들을 수 없는 반의 개수 b와 그 반들의 번호 b개를 담는다. (0≤b≤ai+1, 번호는 1 이상 ai+1 이하이고 서로 다르다)
최고 학년인 n학년은 반의 수 an만 주어진다.
교실을 가장 잘 배정했을 때 교실을 배정받는 반의 개수의 최댓값을 첫째 줄에 출력하시오.