아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

주차장 정리

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

요약
자동차 한 줄과 W명의 작업자가 주어질 때, 타입이 오름차순이 되도록 자리를 옮겨야 하는 자동차 수의 최솟값을 구한다.
난이도

보통10점 중 6점

유형
그리디, 동적 계획법, 조합론
정답자
아직 제출이 없습니다

문제

만리장성 옆 주차장에는 주차 칸이 한 줄로 길게 늘어서 있다. 줄의 한쪽 끝을 왼쪽, 다른 쪽 끝을 오른쪽이라고 하자. 모든 칸에 차가 한 대씩 서 있다. 차마다 정수로 나타내는 종류가 있고, 종류가 같은 차가 여러 대 있을 수도 있다.

작업자 WW명이 차를 옮겨서 왼쪽 끝부터 오른쪽 끝까지 종류가 오름차순이 되도록 정리한다. 작업은 라운드 단위로 이루어진다. 한 라운드에서 각 작업자는 차 한 대를 칸 밖으로 몰고 나온 다음, 같은 라운드에 다른 차가 빠져나가 비게 된 칸에 그 차를 넣을 수 있다. 한 라운드를 쉬는 작업자가 있어도 된다.

작업자들은 자리를 옮기는 차가 가장 적기를 바란다. 처음 서 있던 칸과 마지막에 서 있는 칸이 다르면 그 차는 옮긴 차로 세고, 그 사이에 몇 번을 오갔는지는 세지 않는다. 종류가 같은 차끼리는 구별하지 않으므로, 어떤 차가 종류가 같은 다른 차의 처음 자리에 들어가도 된다.

줄에 선 차의 종류와 작업자 수가 주어질 때, 옮겨야 하는 차의 최소 개수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 정수 세 개가 주어진다. 첫 번째는 차의 수 NN이다. 2≤N≤200002 \le N \le 20000이다. 두 번째는 종류의 수 MM이다. 2≤M≤502 \le M \le 50이다. 차의 종류는 11부터 MM까지의 정수이고, 각 종류의 차가 적어도 한 대씩 줄에 서 있다. 세 번째는 작업자의 수 WW이다. 2≤W≤M2 \le W \le M이다. 둘째 줄에는 정수 NN개가 주어지며, ii번째 정수는 줄의 왼쪽 끝에서부터 센 ii번째 차의 종류이다.

출력

왼쪽 끝부터 오른쪽 끝까지 종류가 오름차순이 되도록 정리할 때 옮겨야 하는 차의 최소 개수를 한 줄에 출력한다.

예제2

  1. 예제 1

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

    입력
    6 2 2
    2 1 1 1 2 2
    
    예상 출력
    2