만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

수면 패턴

면접 대비

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

요약
월요일부터 금요일까지의 수면 기록이 주어질 때, 주간 수면 시간이 T시간이 되도록 주말에 자야 하는 최소 시간을 구하고, 48시간을 다 자도 부족하면 -1을 출력한다.
난이도

보통10점 중 4점

유형
구현, 수학, 정렬, 시뮬레이션
정답자
아직 제출이 없습니다

문제

사회적 거리두기와 휴학으로 집에만 지내던 민티는 수면 패턴이 자꾸 깨져서 걱정이다.

민티는 건강을 위해 앞으로 일주일에 TT시간 이상은 꼭 자두기로 결심했다. 매일 같은 시각에 자고 일어나는 것은 아직 힘들어서, 평일에 잔 시각을 기록해 두고 주말에 모자란 만큼 몰아서 자기로 했다. 민티는 한 번 잠들면 최소 1시간 이상 자며, 가끔은 일어나자마자 너무 졸려서 바로 다시 잠들기도 한다.

평일이 다 지나고 민티에게 마음껏 잘 수 있는 48시간의 주말이 주어졌다. 민티는 평일에 적어 둔 기록을 보고 주말 동안 몇 시간을 자야 하는지 계산하려고 한다.

민티가 평일 동안 잠든 시각과 일어난 시각이 주어질 때, 주말에 자야 할 최소 시간을 출력하라.

입력

첫째 줄에 일주일에 자야 할 시간을 나타내는 정수 TT와 민티가 평일 동안 잠든 횟수를 나타내는 정수 NN이 주어진다.

다음 NN개의 줄에 민티가 잠든 시각이 주어진다. 각 줄에는 D1D_1, H1H_1, D2D_2, H2H_2의 순서로 잠든 시각과 일어난 시각이 주어진다. D1D_1은 잠든 요일, H1H_1은 잠든 시각, D2D_2는 일어난 요일, H2H_2는 일어난 시각을 뜻한다. 요일은 Mon, Tue, Wed, Thu, Fri 중 하나이며, 각각 월요일, 화요일, 수요일, 목요일, 금요일을 뜻한다. 시각은 0 이상 23 이하의 정수로 주어지며, 0시부터 23시까지의 시각을 뜻한다.

수면끼리 서로 겹치지는 않지만, 민티가 일어나자마자 다시 잠들 수 있어서 한 수면의 잠든 시각과 다른 수면의 일어난 시각이 같을 수 있다. 수면의 시작과 끝은 항상 평일이며, 입력은 잠든 시각이 빠른 순으로 정렬되어 주어진다. 민티가 평일 동안 잠을 전혀 자지 않는 경우도 있을 수 있다.

출력

민티가 주말에 더 자야 할 시간을 출력한다. 주말에 자지 않아도 충분하면 0을, 주말 내내 자도 부족하면 -1을 출력한다.

제한

  • 0≤T≤1680 \le T \le 168
  • 0≤N≤100 \le N \le 10

예제3

  1. 예제 1

    입력
    56 6
    Mon 22 Tue 2
    Tue 15 Tue 19
    Tue 19 Wed 4
    Wed 17 Thu 1
    Thu 12 Thu 17
    Fri 4 Fri 12
    
    예상 출력
    18
    
  2. 예제 2

    입력
    50 5
    Mon 0 Mon 11
    Tue 2 Tue 12
    Wed 0 Wed 10
    Thu 3 Thu 15
    Fri 11 Fri 23
    
    예상 출력
    0
    
  3. 예제 3

    입력
    120 5
    Mon 0 Mon 11
    Tue 2 Tue 12
    Wed 0 Wed 10
    Thu 3 Thu 15
    Fri 11 Fri 23
    
    예상 출력
    -1