만드는 중입니다

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

음악 표절

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

요약
노래를 음의 나열로 주고 의심되는 발췌 구간이 조를 바꿔서라도 노래 안에 나타나는지 판정한다.
난이도

보통10점 중 6점

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

문제

음은 서양 전통 음악의 기본 단위다. 음마다 진동수가 하나씩 대응하는데, 기본 진동수의 비가 2의 거듭제곱인 두 음(한쪽이 다른 쪽의 절반이거나 두 배인 경우 등)은 귀에 거의 같은 음으로 들린다. 그래서 이런 관계인 음은 모두 같은 이름을 쓴다.

기본이 되는 음은 열두 개다. 진동수가 작은 것부터 늘어놓으면 이웃한 두 음의 간격이 어디서나 같고, 이 간격을 반음이라고 한다. 열두 음 가운데 일곱 개는 알파벳 A, B, C, D, E, F, G로 적는다. 이 일곱 음 사이의 거리를 반음 수로 나타내면 다음과 같다.

음A-BB-CC-DD-EE-FF-GG-A
반음 수2122122

알파벳 이름이 없는 음이 다섯 개 남는다. A와 B 사이, C와 D 사이, D와 E 사이, F와 G 사이, G와 A 사이에 있는 음이다.

음에는 변화표 두 가지를 붙일 수 있다. 올림표 #는 음을 반음 올리고, 내림표 b는 음을 반음 내린다. 변화표를 붙인 음은 음 이름 뒤에 기호를 이어 적는다. 이 표기로 열두 음을 모두 적을 수 있다.

아래 그림은 피아노 건반의 일부에 위 규칙대로 음 이름을 붙인 것이다.

선율은 음을 나열해 적는다. 예를 들어 A A D C# C# D E E E F# A D G# A는 널리 알려진 선율이다. 반음 간격이 어디서나 같으므로 같은 선율을 다른 음에서 시작해 적을 수도 있다. 이때 선율의 조가 바뀌었다고 한다.

B B E D# D# E Gb Gb Gb G# B E A# B

이웃에 사는 작곡가가 누군가 자기 곡을 표절했다고 의심한다. 곡의 선율과 표절이 의심되는 선율 조각이 주어질 때, 그 조각이 어떤 조로든 곡 안에 나타나는지 판정하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 정수 M과 T가 주어진다(1≤M≤1000001 \le M \le 100000, 1≤T≤100001 \le T \le 10000, T≤MT \le M). M은 곡의 음 개수, T는 표절이 의심되는 조각의 음 개수다. 이어지는 두 줄에는 곡의 음 M개와 조각의 음 T개가 차례로 주어진다.

한 줄 안의 음은 공백으로 구분한다. 각 음은 A, B, C, D, E, F, G 중 하나이고, 뒤에 올림표 #나 내림표 b가 붙을 수 있다.

마지막 테스트 케이스 다음 줄에는 공백으로 구분한 0 두 개만 주어진다.

출력

각 테스트 케이스마다 문자 하나를 한 줄에 출력한다. 조각이 실제로 곡에서 나타나면 S, 그렇지 않으면 N을 출력한다.

예제7

  1. 예제 1

    입력
    16 4
    D G A B C D G G G C D E F# G C C
    G G C D
    12 2
    C C# D D# E F F# G G# A A# B
    C D
    12 2
    C Db D Eb E F Gb G Ab A Bb B
    C D
    4 3
    C E G Bb
    D F# A
    0 0
    
    예상 출력
    S
    N
    N
    S
    
  2. 예제 2

    입력
    5 1
    C D E F G
    B#
    1 1
    A
    A
    0 0
    
    예상 출력
    S
    S
    
  3. 예제 3

    입력
    4 4
    C D E F
    E F# G# A
    4 4
    C D E F
    C D E F#
    0 0
    
    예상 출력
    S
    N
    
  4. 예제 4

    입력
    6 3
    A A# B C C# D
    Db D Eb
    3 2
    Cb C B#
    B C
    0 0
    
    예상 출력
    S
    S
    
  5. 예제 5

    입력
    5 3
    G A B C D
    B C D
    5 3
    G A B C D
    E F G
    5 3
    G A B C D
    B C C#
    0 0
    
    예상 출력
    S
    S
    N
    
  6. 예제 6

    입력
    6 3
    C D E G A B
    F G A
    6 3
    C D E G A B
    A B C#
    0 0
    
    예상 출력
    S
    S
    
  7. 예제 7

    입력
    6 4
    C C# D D# E G
    D D# E G
    6 5
    C C# D D# E G
    F F# G G# B
    6 5
    C C# D D# E G
    C C# D D# G
    0 0
    
    예상 출력
    S
    S
    N