ACM

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

요약
마지막 한 시간 동안 다른 팀의 제출 결과가 가려진 ACM 스코어보드에서, 영웅 팀이 받을 수 있는 최악의 최종 순위를 구한다.
난이도

보통10점 중 6점

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

문제

오래된 프로그래밍 대회가 다가오고 있으며, 주최자는 다름 아닌 ACM(Aeronautic Centre of Metković)이다. 정확히 N개의 팀이 대상을 두고 겨루며, 그중에는 크로아티아의 황금 트리오 Paula, Marin, Josip이 있다. 대회 형식은 표준적이다. 조종사가 곡예 비행을 하는 동안 부조종사가 문제 지문을 읽고, 기체 외부에 단단히 테이프로 붙여진 코드 원숭이 메인 프로그래머에게 해답을 전송하려고 시도한다.

대회는 M개의 서로 다른 문제로 구성되며, 팀들은 푼 문제 수에 따라 (비증가 순으로) 정렬된다.

푼 문제 수가 같은 팀들은 소위 페널티 시간에 따라 (비감소 순으로) 정렬된다. 어떤 팀의 페널티 시간은 그 팀이 올바르게 푼 각 문제에서 얻은 페널티 시간의 합이다. 올바르게 푼 문제의 페널티 시간은 그 팀이 그 문제를 푸는 데 걸린 시간(대회 시작부터)에 그 문제에 대한 오답 제출마다 20분을 더한 값이다. 이미 푼 문제에 대한 답안을 다시 제출하려는 팀은 없다. 한 문제에 대한 최대 제출 횟수는 팀당 9회이다. 푼 문제 수와 페널티 시간이 모두 같은 팀들은 최종 순위에서 알파벳 순으로 정렬된다.

대회는 5시간 동안 진행된다. 처음 4시간 동안은 순위표가 모든 팀에 공개되며, 각 팀의 각 문제 상태(제출 횟수, 풀었는지 여부, 푼 시각)에 대한 정보를 담는다. 그 4시간 동안 제출이 있을 때마다 팀 순서가 자동으로 갱신된다. 하지만 마지막 1시간 동안은 순위표가 동결된다. 즉, 새 제출이 채점되어도 팀 순서가 갱신되지 않는다. 그 시간 동안 각 팀은 자기 제출의 채점 결과는 알지만, 다른 팀이 제출한 것의 채점 결과는 모른다. 다른 팀이 어떤 문제를 제출했는지, 몇 번 제출했는지, 각 문제의 마지막 제출이 언제였는지만 안다.

대회가 끝났고, 순위표는 곧 동결 해제될 예정이다. 우리의 영웅들, NijeZivotJedanACM 팀은 당신의 도움이 필요하다. 순위표가 동결 해제된 후 그들이 기록할 수 있는 가장 나쁜 순위를 알고 싶어 한다. 도와주자!

입력

첫째 줄에 문제 설명에서의 정수 N (1 ≤ N ≤ 1000)과 M (1 ≤ M ≤ 15)이 주어진다.

다음 N개의 줄은 동결된 순위표를 나타낸다. 각 줄은 팀 이름(영문 대소문자로 이루어지며 길이가 최대 20인 문자열이고, 모든 팀의 이름은 서로 다르다)으로 시작하고, 공백 하나를 두고 M개의 (역시 공백으로 구분된) 문자열이 이어지는데, 이 문자열들은 그 팀의 각 문제 상태에 대한 정보를 담는다.

그 문자열은 SX/V 형태이다. 여기서:

  • S는 문제 상태이다. ‘+’는 올바르게 풀었음, ‘-’는 틀리게 풀었음, ‘?’는 마지막 제출이 순위표가 이미 동결된 후에 이루어졌음을 뜻한다.
  • X는 그 팀이 이 특정 문제에 대해 제출한 횟수이다. 그 문제에 제출이 없으면 생략된다.
  • V는 그 팀이 이 특정 문제에 대해 마지막 제출을 한 시각이다. HH:MM:SS 형식(앞에 0을 채움)으로 주어지며 5시간보다 작다. 문제를 올바르게 풀지 못한 경우(상태 ’-’)에는 /V 부분 전체가 생략된다.

마지막 줄은 우리의 영웅들, NijeZivotJedanACM 팀의 동결 해제된 순위표를 담는다.

출력

첫째 줄이자 유일한 줄에 순위표가 동결 해제된 후 우리의 영웅들이 기록할 수 있는 가장 나쁜 순위를 출력한다.

힌트

첫 번째 예제 설명: 순위표가 동결 해제된 후에도 아무것도 바뀌지 않는다. 따라서 우리의 영웅들은 1위를 유지한다!

두 번째 예제 설명: 최악의 경우 우리의 영웅들은 StoJeZivot 팀에게만 지므로, 2위로 마친다.

세 번째 예제 설명: 최악의 경우 우리의 트리오는 NisamSadaNistaDonio 팀과 JeLiMojKockaSeUmio 팀에게 지므로, 3위로 마친다.

예제3

  1. 예제 1

    입력
    2 1
    NijeZivotJedanACM -
    ZivotJESTJedanACM -
    NijeZivotJedanACM -
    
    예상 출력
    1
    
  2. 예제 2

    입력
    3 2
    StoJeZivot ?1/04:00:00 +1/02:04:06
    JeLiZivotJedanACM ?1/04:59:59 -
    NijeZivotJedanACM ?1/04:42:43 -
    NijeZivotJedanACM +1/04:42:43 -
    
    예상 출력
    2
    
  3. 예제 3

    입력
    7 4
    NisamSadaNistaDonio +1/03:59:59 +3/03:42:02 +2/00:14:59 ?1/04:56:12
    JeLiMojKockaSeUmio ?4/04:00:00 -3 +1/00:10:01 +9/03:04:42
    OstaviDobroJe ?4/04:59:59 -1 +2/00:24:15 +8/03:24:45
    DobroJeOstavi +1/01:42:53 - ?9/04:58:23 ?1/04:34:43
    NijeZivotJedanACM ?2/04:50:05 ?4/04:32:12 +2/01:32:45 ?1/04:59:59
    KoSeToSeta ?1/04:23:32 - +9/01:00:00 -9
    SipSipSipSipSipSip - - - ?9/04:00:00
    NijeZivotJedanACM -2 +4/04:32:12 +2/01:32:45 +1/04:59:59
    
    예상 출력
    3