러닝머신

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

요약
샘플 열에서 처프 비트 패턴을 찾아 속도와 경사를 해독하고 시작 시각을 출력한다.
난이도

보통10점 중 4점

유형
구현, 문자열 매칭, 시뮬레이션
정답자
아직 제출이 없습니다

문제

You'reFat 러닝머신 회사는 사용자가 오디오 프로그램(온라인 스트리밍 오디오 또는 CD)에 맞춰 운동 프로그램을 실행할 수 있도록 러닝머신을 개선하기로 했다. 이 프로그램에는 경쾌한 음악과 강사의 응원이 담긴다. 오디오 프로그램에는 속도와 경사의 변경을 알리는 칩(chirp)을 삽입할 수 있다. 예를 들어 러닝머신의 속도를 높여야 할 때가 되면, 러닝머신이 칩에서 새 속도를 읽어 들이는 동안 음악이 잠시 멈췄다가 다시 재생된다. 러닝머신은 0부터 7마일/시의 속도와 0부터 7도의 경사를 지원한다.

한 프로그램은 샘플의 나열이다. 각 샘플은 0(최솟값)부터 9(최댓값)까지의 값을 가진다. 1초에 샘플이 3개씩 들어간다. 각 칩은 비트의 나열이다. 비트 0은 각각 4 또는 5인 샘플 두 개로 이루어진다. 비트 1은 샘플 두 개로 이루어지며, 첫 번째는 0 또는 1, 두 번째는 8 또는 9이다. 칩은 비트 "01"로 시작한다. 이어지는 세 비트는 새 속도를 나타내며, 최하위 비트부터 온다. 그다음 세 비트는 새 경사를 나타내며, 이 역시 최하위 비트부터 온다. 속도나 경사 중 하나가 바뀌지 않더라도 모든 칩에는 속도와 경사가 모두 포함된다는 점에 유의하라. 속도 3마일/시, 경사 6도를 나타내는 칩은 다음과 같다:

샘플5519191945540918
비트01110011
의미시작 비트속도: 3 mph경사: 6도

입력

입력은 하나 이상의 프로그램으로 이루어진다. 각 프로그램에는 1부터 시작하는 번호가 암묵적으로 매겨진다. 첫 줄에는 뒤따르는 프로그램의 개수인 정수 n이 하나 주어진다. 각 프로그램은 샘플의 나열이다. 프로그램의 각 줄에는 정확히 30개의 샘플이 있으며, 마지막 줄만 그보다 적을 수 있다. 각 프로그램의 끝은 값이 10인 샘플로 표시된다.

다음에 유의하라.

  • 배경 음악의 샘플은 0부터 9까지 어떤 값이든 될 수 있지만, 칩의 시작 비트 나열 "01"(중간, 중간, 낮음, 높음)은 배경 음악에서는 나타나지 않는다.
  • 칩은 시간을 소비한다.
  • 각 운동은 60분 미만이다.
  • 속도가 0인 칩이 운동의 끝을 뜻하지는 않는다.
  • 칩 앞에는 값이 4 또는 5인 샘플이 하나 이상 올 수 있다.
  • 칩이 반드시 정수 초 경계에서 시작하는 것은 아니다.
  • 각 칩은 올바른 형식이다(정상적인 0 또는 1 비트만 나타난다).

출력

각 오디오 프로그램에 대해 먼저 "Program n" 줄을 출력한다. 여기서 n은 프로그램 번호이다. 그다음 그 오디오 프로그램에 있는 각 칩의 시간, 속도, 경사를 출력한다. 각 칩은 "mm:ss Speed S Inclination I" 형식으로 한 줄을 출력한다. 분과 초는 모두 앞자리를 0으로 채워("00"부터 "59"까지) 출력한다. 칩의 시간은 시작 비트의 첫 샘플이 놓인 시각이며, 1초 미만의 소수 부분은 버린다. 속도 S와 경사 I는 모두 한 자리 십진수로 출력한다. 출력의 각 항목 사이에는 공백이 하나씩 있어야 한다.

예제1

  1. 예제 1

    입력
    2
    7 1 2 3 3 6 9 1 1 5 5 1 9 1 9 1 9 4 5 5 4 0 9 1 8 0 1 0 1 3
    3 5 4 0 9 4 5 4 4 1 9 5 4 4 4 5 5 5 3 2 7 8 10
    5 2 6 5 5 3 4 4 5 1 9 5 4 0 9 5 4 1 8 5 5 4 4 3 5 4 6 4 7 6
    4 4 6 4 4 4 5 5 4 4 5 6 4 6 4 4 4 1 8 5 5 0 8 4 5 5 5 1 8 4
    4 4 4 6 4 5 4 4 6 4 6 2 4 5 6 4 6 5 4 5 4 5 4 5 2 6 4 4 5 5
    7 7 3 4 4 5 5 5 6 6 5 5 5 0 9 0 9 1 9 5 4 1 8 4 5 4 5 6 4 4
    4 8 7 5 3 4 4 2 4 6 8 7 5 4 6 5 7 6 10
    
    예상 출력
    Program 1
    00:03 Speed 3 Inclination 6
    00:10 Speed 4 Inclination 0
    Program 2
    00:02 Speed 2 Inclination 1
    00:15 Speed 2 Inclination 2
    00:33 Speed 3 Inclination 1