만드는 중입니다

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

아나그램 2

면접 대비

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

요약
두 정수 배열에서 서로 애너그램인 연속 부분 배열 쌍 중 가장 긴 것의 길이와 시작 위치를 구합니다.
난이도

보통10점 중 4점

유형
배열, 해시맵, 슬라이딩 윈도우
정답자
아직 제출이 없습니다

문제

투명 인간이 심심풀이로 집들의 지붕 위를 거닐다가, 최상층의 열린 창문에서 흘러나오는 두 사람의 대화를 우연히 들었다. 대화하던 사람은 "노릭"과 "심카"였다. 투명 인간은 "이름이 이상하군"이라고 생각했지만, 이름은 그에게 중요하지 않았다. 대화 주제가 프로그래밍이었기 때문에, 그는 그런 유혹을 그냥 지나칠 수 없었다.

주의 깊게 듣고 나서, 그는 두 사람이 다루던 문제를 이해했다. 패턴 배열과 텍스트 배열이 주어졌을 때, 텍스트의 연속된 부분 배열이 패턴과 애너그램인지 판단하는 문제였다. 두 수열은 원소를 재배열해서 서로 같게 만들 수 있으면 애너그램이다. 투명 인간은 이 문제가 너무 쉽다고 보고 더 어렵게 바꿨다. 두 배열이 주어졌을 때, 첫 번째 배열에 길이 kk인 연속된 부분 배열이 있고 두 번째 배열에도 길이 kk인 연속된 부분 배열이 있으며, 두 부분 배열이 서로 애너그램인 최대의 kk를 구하는 것이다. 이 문제는 투명 인간의 능력을 넘어서서, 당신에게 도움을 청했다.

입력

첫째 줄에 첫 번째 배열의 길이 nn (1≤n≤1 0001 \le n \le 1\,000)이 주어진다. 둘째 줄에 첫 번째 배열의 원소 aia_i (1≤ai≤100 0001 \le a_i \le 100\,000) nn개가 공백으로 구분되어 주어진다. 셋째 줄에 두 번째 배열의 길이 mm (1≤m≤1 0001 \le m \le 1\,000)이 주어진다. 넷째 줄에 두 번째 배열의 원소 bib_i (1≤bi≤100 0001 \le b_i \le 100\,000) mm개가 공백으로 구분되어 주어진다.

출력

한 줄에 세 개의 음이 아닌 정수 kk, ii, jj를 출력한다. kk는 애너그램인 부분 배열의 최대 길이이고, ii는 첫 번째 배열에서 그 구간이 시작하는 위치, jj는 두 번째 배열에서 그 구간이 시작하는 위치이다. 최대 길이가 0이면 나머지 두 수는 모두 -1이어야 한다.

예제2

  1. 예제 1

    입력
    3
    1 2 3
    3
    3 2 1
    
    예상 출력
    3 1 1
    
  2. 예제 2

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