만드는 중입니다

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

상대음감의 노래찾기

면접 대비

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

요약
여러 곡의 음표 데이터에서 멜로디가 음높이만 평행 이동한 형태로 나타나는 곡의 번호를 오름차순으로 출력하고, 없으면 -1을 출력합니다.
난이도

보통10점 중 5점

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

문제

상대음감은 음을 절대적인 높이로 구분하지 않고, 어떤 음과의 상대적인 높이로 음을 인식하는 능력을 말한다. 상대음감은 절대음감에 비해 불리한 점이 있지만, 어렴풋한 멜로디만으로도 노래를 찾을 수 있다는 장점이 있다.

기령이는 이 점에 착안해 상대음감 노래찾기 서비스를 만들려고 한다. 데이터베이스에는 노래마다 음 데이터가 저장되어 있다. 사용자가 멜로디를 입력하면, 서비스는 그 멜로디가 데이터베이스의 노래에 포함되어 있는지 확인해 해당 노래를 안내한다. 이 서비스는 멜로디 전체가 다른 높이에서 나타나도 일치하는 것으로 판단한다. 즉, 찾으려는 멜로디가 a1,a2,⋯ ,aLa_1, a_2, \cdots, a_L일 때, 임의의 정수 xx에 대하여 a1+x,a2+x,⋯ ,aL+xa_1+x, a_2+x, \cdots, a_L+x가 노래에 포함되어 있으면 일치한다.

예를 들어 사용자가 "1 2 1 2"를 입력하면, "3 4 3 4 5 5"라는 노래에 이 멜로디가 포함되므로 해당 노래를 안내한다.

상대음감의 노래찾기 서비스를 구현해 보자.

입력

첫째 줄에 데이터베이스에 있는 노래의 수 NN이 주어진다. (1≤N≤1 000)(1 \leq N \leq 1\,000)

이후 NN개의 줄에 걸쳐 ii번 노래의 길이 KiK_i (2≤Ki≤100 000)(2 \leq K_i \leq 100\,000)와 음 데이터 a1 a2 ⋯ aKia_1\ a_2\ \cdots\ a_{K_i}가 공백으로 구분되어 주어진다. 모든 KiK_i의 합은 1 000 0001\,000\,000을 넘지 않는다.

다음 줄에는 찾으려는 멜로디의 길이 LL이 주어진다. (2≤L≤10 000)(2 \leq L \leq 10\,000) 그다음 줄에는 길이가 LL인 멜로디 데이터 b1 b2 ⋯ bLb_1\ b_2\ \cdots\ b_L이 주어진다.

데이터의 모든 값은 1 이상 10,000 이하이다.

출력

찾으려는 멜로디가 존재하는 노래의 번호를 공백으로 구분하여 오름차순으로 출력한다. 존재하지 않으면 -1을 출력한다.

예제2

  1. 예제 1

    입력
    6
    8 1 2 3 1 1 3 3 1
    4 10 10 10 10
    6 6 4 5 4 5 6
    7 3 4 9 1 2 5 3
    2 3 4
    6 3 4 3 4 5 5
    4
    1 2 1 2
    
    예상 출력
    3 6
    
  2. 예제 2

    입력
    2
    5 1 2 4 3 3
    6 2 5 2 5 2 2
    4
    5 4 3 2
    
    예상 출력
    -1