만드는 중입니다

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

값 바꿔 정렬하기

면접 대비

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

요약
배열 A와 집합 B가 주어질 때, B의 값으로 A의 원소를 최소 몇 개 바꿔야 A가 정렬되는지 구합니다. 불가능하면 -1을 출력합니다.
난이도

보통10점 중 6점

유형
그리디, 정렬, 이분 탐색, 배열
정답자
아직 제출이 없습니다

문제

정수로 이루어진 배열 AA와 정수 집합 BB가 주어진다. AA와 BB의 모든 수는 서로 다르다. 목표는 AA를 정렬된 배열로 만드는 것이다. 이를 위해 BB에서 수를 하나 골라 AA의 임의의 원소를 그 수로 바꿀 수 있다. 이 연산은 몇 번이든 수행할 수 있지만, BB의 각 원소는 최대 한 번만 사용할 수 있다.

AA를 정렬된 배열로 만드는 데 필요한 연산 횟수의 최솟값을 구하라. 만들 수 없다면 그 사실을 알아내라.

입력

첫째 줄에 AA와 BB의 크기 NN, MM이 주어진다 (1≤N,M≤5⋅1051 \le N, M \le 5 \cdot 10^5).

둘째 줄에 A1,A2,…,ANA_1, A_2, \ldots, A_N이 주어진다.

셋째 줄에 B1,B2,…,BMB_1, B_2, \ldots, B_M이 주어진다.

N+MN + M개의 모든 원소는 서로 다르고, 양의 정수이며, 10910^9를 넘지 않는다.

출력

AA를 정렬된 배열로 만들 수 없으면 −1-1을 출력한다. 그렇지 않으면 필요한 연산 횟수의 최솟값을 출력한다.

힌트

세 예시 모두 13>1013 > 10이 문제이므로, 둘 중 적어도 하나는 바꿔야 한다.

첫 번째 예시에서는 1313을 55로 바꿔 줄일 수 있지만, 그러면 다른 쪽이 깨지므로 해가 없다.

두 번째 예시에서는 44로 깨진 쪽을 고칠 수 있다. 연산 2번보다 적게는 불가능하다.

세 번째 예시에서는 마지막 원소를 키울 수 있고, 그러면 연산 1번으로 AA가 정렬된다.

예제3

  1. 예제 1

    입력
    4 1
    2 6 13 10
    5
    
    예상 출력
    -1
    
  2. 예제 2

    입력
    4 2
    2 6 13 10
    5 4
    
    예상 출력
    2
    
  3. 예제 3

    입력
    4 3
    2 6 13 10
    5 4 19
    
    예상 출력
    1