박물관 경비원
시간 제한5초메모리 제한128 MB
각 경비원의 근무 가능 시간과 하루 최대 근무 시간 안에서 30분 단위의 반복 일일 근무 구간을 정해, 하루 중 어느 순간에도 근무 인원의 최솟값이 최대가 되도록 배정한다.
문제
한 박물관이 경비원들을 위한 매일 반복되는 24시간 근무표를 만들려고 한다. 다음 규칙을 지켜야 한다.
- 각 경비원은 매일 같은 시간대에 근무한다.
- 각 경비원은 자신이 지정한 근무 가능 시간대 안에서만 근무한다.
- 각 경비원은 자신이 지정한 최대 근무 시간(분) 이하로만 근무한다.
- 경비원은 30분 단위 경계에서만 근무를 시작하거나 끝낼 수 있다(예: 04:00이나 04:30은 되지만 04:15은 안 된다).
- 경비원은 어떤 근무 시간 동안 매 순간 근무 가능한 경우에만 그 근무에 배정될 수 있다(예를 들어 어떤 경비원의 근무 가능 시간이 03:05에 시작한다면, 그 경비원은 03:00부터 근무를 시작할 수 없다).
목표는 하루 중 어느 순간이든 근무 중인 경비원 수의 최솟값을 최대화하여 보안을 최대한 강화하는 것이다. 경비원 교대는 순간적으로 이루어진다. 즉, 몇 명이 떠나는 바로 그 순간에 같은 수의 경비원이 도착하면, 교대 중에도 근무 인원 수는 줄어들지 않는다.
입력
입력에는 여러 개의 테스트 케이스가 있다. 각 테스트 케이스는 근무 가능한 경비원의 수 ()이 담긴 줄로 시작하고, 이어서 경비원마다 하나씩 총 개의 블록이 온다.
각 블록은 두 정수 ()와 ()으로 시작한다. 는 경비원의 근무 가능 시간대의 개수이고, 은 하루에 근무할 수 있는 최대 시간(분)이다. 이어지는 개의 줄에는 각각 근무 가능 시간대의 시작 시각과 끝 시각이 공백으로 구분되어 주어진다. 이 시간대들은 겹칠 수 있으며, 경비원은 개 시간대의 합집합에 해당하는 시각에 근무할 수 있다.
각 시각은 HH:MM 형식이다(, ). 자정은 00:00이다. 끝 시각이 시작 시각보다 이르면 그 시간대는 자정을 넘어간다(예를 들어 23:00 03:00은 밤 23:00부터 다음 날 아침 03:00까지 근무 가능함을 뜻한다). 시작 시각과 끝 시각이 같으면 하루 종일 근무 가능하다. 마지막 테스트 케이스 다음에는 0 하나만 있는 줄이 온다.
출력
각 테스트 케이스마다 한 정수를 출력한다. 이는 하루 중 매 순간 근무 중인 경비원이 최소 명이 되도록 하는 유효한 근무표가 존재하는 가장 큰 이다(위에서 설명한 순간적 교대를 가정한다). 답 사이에 빈 줄을 넣지 않는다.