봉쇄 당번표
시간 제한1초메모리 제한512 MB
각 학생의 자유 시간과 하루 근무 한도를 지키면서 매 순간 M명 이상이 근무하도록 하는 일정이 존재하는 최대 M을 구한다.
문제
어느 대학 학생들이 학장과 갈등을 빚어 학교 건물을 봉쇄하기로 했다. 봉쇄가 유지되려면 하루 24시간 내내 일정한 수의 학생이 건물에 실제로 있어야 한다. 주최자는 당번을 최대한 공평하게 나누려고 다음 규칙을 정했다.
- 당번표는 매일 같다.
- 학생은 다른 일정이 없어 한가한 시간에만 당번을 설 수 있다.
- 학생마다 하루(자정부터 자정까지) 동안 당번으로 쓸 수 있는 총 시간을 스스로 정한다.
- 계산을 간단히 하려고 당번은 정시나 30분에만 시작하고 끝난다. 예를 들어 16:00이나 16:30은 되지만 16:15는 안 된다.
- 당번을 서는 시간 내내 한가해야 한다. 예를 들어 어떤 학생이 16:05부터 한가하다고 했다면 그 학생을 16:00부터 당번으로 넣을 수 없다.
- 하루 중 어느 순간이든 당번을 서는 학생 수의 최솟값을 최대로 만든다. 그래야 봉쇄가 성공할 가능성이 커진다.
위 규칙을 모두 만족하는 당번표를 만들 수 있으면서 하루의 모든 순간(자정부터 자정까지)에 적어도 명이 당번을 서게 되는, 가장 큰 을 구하는 프로그램을 작성하라.
당번 교대는 즉시 이루어진다고 가정한다. 즉 두 학생이 봉쇄를 떠나고 다른 두 학생이 그 자리를 이어받으면, 교대하는 동안에도 봉쇄에 두 학생이 계속 있었다고 본다.
입력
첫 줄에 봉쇄에 참여하려는 학생 수 ()이 주어진다. 이어서 개의 블록이 오고, 각 블록은 학생 한 명의 사정을 설명한다.
각 블록의 첫 줄에는 두 정수 ()와 ()가 주어진다. 는 번째 학생이 다른 일정 없이 봉쇄에 참여할 수 있는 시간대의 개수이고, 는 그 학생이 하루에 당번으로 쓸 수 있는 최대 시간(분)이다.
블록의 남은 개 줄에는 학생이 연속으로 한가한 구간의 시작 시각과 끝 시각이 공백으로 구분되어 주어진다. 구간끼리 겹칠 수 있고, 구간의 합집합이 그 학생이 봉쇄에 있을 수 있는 시간이다.
시각은 HH:MM 형식이다 (, ). 자정은 00:00으로 쓴다. 끝 시각이 시작 시각보다 앞서면 그 학생은 자정을 넘겨 봉쇄에 남을 수 있다는 뜻이다. 예를 들어 23:00 03:00은 23시부터 다음 날 아침 3시까지 있을 수 있다는 뜻이다. 시작 시각과 끝 시각이 같으면 24시간 내내 봉쇄에 있을 수 있다는 뜻이다.
출력
정수 하나를 출력한다. 위 가정 아래 하루의 모든 순간에 봉쇄에 있을 수 있는 학생 수의 최댓값 이다.