로고 매칭
시간 제한2초메모리 제한128 MB
길이 n인 순열 패턴과 서로 다른 높이를 가진 m개의 건물이 주어질 때, 길이 n짜리 구간이 패턴과 상대적 순서가 일치하는 모든 시작 위치를 찾는 문제입니다.
문제
새 광고 캠페인의 일환으로, 한 대기업이 도시 어딘가에 자사 로고를 세우려고 한다. 회사는 올해 광고 예산 전부를 이 로고에 쓸 예정이라 로고는 아주 거대해야 한다. 한 관리자는 건물 전체를 로고의 구성 요소로 사용하기로 했다.
로고는 서로 높이가 모두 다른 개의 세로 줄무늬로 이루어지며, 줄무늬는 왼쪽에서 오른쪽으로 번부터 번까지 번호가 매겨진다. 로고는 의 순열 으로 표현된다. 즉 번 줄무늬가 가장 낮고, 번 줄무늬가 두 번째로 낮으며, 이런 식으로 번 줄무늬가 가장 높다. 줄무늬의 실제 높이 값은 중요하지 않고 오직 상대적인 순서만이 의미가 있다.
큰길을 따라 개의 건물이 늘어서 있고, 모든 건물의 높이는 서로 다르다. 연속한 개의 건물로 이루어진 구간이 로고와 일치한다는 것은, 그 구간 안에서 번째 건물이 가장 낮고, 번째 건물이 두 번째로 낮고, 이런 식으로 순서가 로고와 같음을 뜻한다. 예를 들어 높이가 인 건물들은 로고 와 일치한다. 번째 건물(높이 )이 가장 낮고, 번째 건물이 두 번째로 낮으며, 번째 건물이 가장 높기 때문이다. 로고가 건물들과 일치하는 모든 위치를 찾아라.
입력
첫째 줄에 두 정수 과 이 주어진다 ().
둘째 줄에 의 순열을 이루는 개의 정수 이 주어진다 (, 그리고 이면 ).
셋째 줄에 건물들의 높이인 개의 정수 이 주어진다 (). 모든 는 서로 다르다.
각 줄에서 정수들은 하나의 공백으로 구분된다.
출력
첫째 줄에 일치하는 구간의 개수 를 출력한다.
둘째 줄에는 각 일치에 대해 로고의 번 줄무늬에 대응하는 건물의 -기반 번호, 즉 각 일치 구간의 시작 위치를 증가하는 순서로 하나의 공백으로 구분하여 출력한다.
이면 둘째 줄은 비워 둔다.
힌트

구간 과 은 모두 순열 로 표현되는 로고와 일치한다. 첫 번째 구간에서 번째 건물(높이 )이 가장 낮고, 번째 건물(높이 )이 두 번째로 낮으며, 번째 건물(높이 )이 세 번째로 낮고, 이런 식으로 이어진다.