만드는 중입니다

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

고정된 파일

면접 대비

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

요약
고정 파일과 비고정 파일의 시작 순서와 목표 순서가 주어질 때, 고정/해제 토글로 옮기는 최소 횟수를 구한다.
난이도

보통10점 중 6점

유형
동적 계획법, 배열, 그리디, 시뮬레이션
정답자
아직 제출이 없습니다

문제

최근에 Visual Studio의 새로운 기능인 고정된 파일(pinned files)을 알게 되었다. 고정된 파일이 어디에 쓸모가 있는지는 전혀 모르지만(친구들에게 물어봤을 때는 쥐 죽은 듯 조용했다), 그렇다고 해서 밤낮으로 파일을 고정하고 해제하는 것을 멈추지는 않는다.

Visual Studio는 현재 열려 있는 파일의 목록을 유지한다. 이 목록은 고정된 파일들로 시작하고 그 뒤에 고정되지 않은 파일들이 온다. 목록의 순서를 바꾸는 것은 클릭 앤 드래그가 아니라 파일의 고정 여부를 토글하는 것으로 이루어진다. 고정된 파일을 해제하면 목록에서 제거된 뒤 첫 번째 고정되지 않은 파일 앞에 추가된다. 고정되지 않은 파일을 고정하면 제거된 뒤 마지막 고정된 파일 뒤에 추가된다.

11부터 44까지 번호가 붙은 네 개의 파일을 예로 들어 보자. 시작 상태는 2,1,4,32, 1, 4, 3이고 파일 11과 22가 고정되어 있다. 원하는 최종 상태가 4,2,3,14, 2, 3, 1이고 파일 44만 고정된 경우, 다음 다섯 번의 토글 연산으로 달성할 수 있다:

2∗ 1∗ 4  3  초기 상태 (∗는 고정된 파일)
2∗ 1∗ 3∗ 4  파일 3 고정
2∗ 1∗ 3∗ 4∗ 파일 4 고정
2∗ 3∗ 4∗ 1  파일 1 해제
2∗ 4∗ 3  1  파일 3 해제
4∗ 2  3  1  파일 2 해제

이 다섯 번의 연산은 시작 상태에서 최종 상태로 가는 최소 횟수이다.

파일의 초기 목록이 주어졌을 때, 목록의 다른 순서에 도달하는 최소 이동 횟수를 구하라. 파일에는 편의상 11부터 nn까지 번호가 붙어 있다.

입력

입력은 네 줄로 이루어진다. 첫 번째 줄에는 두 개의 음이 아닌 정수 pp(고정된 파일의 수)와 uu(고정되지 않은 파일의 수)가 주어진다. 전체 파일 수 n=p+un=p+u는 1≤n≤1001\le n\le 100을 만족한다. 다음 줄에는 목록을 나타내는 nn개의 수가 주어진다. 처음 pp개의 수는 고정된 파일이고 다음 uu개의 수는 고정되지 않은 파일이다. 그다음 두 줄에는 처음 두 줄과 같은 형식으로 최종 상태가 주어진다. 시작 상태와 최종 상태의 파일 수는 같다. 11부터 nn까지의 수는 각 파일 목록에 한 번씩 나타난다.

출력

시작 상태에서 최종 상태로 가는 최소 이동 횟수를 출력한다.

예제3

  1. 예제 1

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

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

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