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

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

철도 운송

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

요약
도착 순서를 유지한 채 각 그룹이 비감소가 되도록 수열을 최소 개수로 나누고, 그 수가 M을 넘으면 실패를 출력한다.
난이도

보통10점 중 5점

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

문제

ACM이 새로운 대형 광고판 시리즈를 제작했고, 이 광고판들을 기차로 운송해야 합니다. 광고판은 각각 화차(carriage)에 실리는데, 화차들이 뒤섞인 순서로 조차장에 도착합니다. 하지만 ACM은 이들이 정해진 순서대로 배달되기를 원합니다.

조차장에는 MM개의 평행한 선로가 있습니다. 화차는 한 번에 하나씩 들어오며, 각 화차는 이 선로들 중 어느 하나로 보낼 수 있습니다. 화차가 일단 어떤 선로에 들어가면 앞으로만 갈 수 있고 절대 뒤로 되돌아갈 수 없습니다. 반대쪽 끝에서 모든 선로는 하나의 출구 선로로 합쳐지며, 여기서도 화차는 앞으로만 이동할 수 있습니다. 화차는 절대 후진할 수 없으므로, 한 선로 위의 화차들은 그 선로에 들어간 순서 그대로 그 선로를 빠져나갑니다.

우리는 화차들이 목표 번호의 비내림차순(오름차순, 같은 값 허용)로 조차장을 떠나기를 원합니다. 화차들은 입력에 주어진 순서대로 도착하며, ii번째 수는 ii번째로 도착하는 화차의 목표 값입니다. 번호가 같은 화차들끼리는 서로 어떤 순서로 나가도 상관없습니다. 선로는 화차를 몇 개든 담을 수 있을 만큼 충분히 깁니다.

입력

입력은 여러 개의 시나리오로 이루어집니다. 각 시나리오는 두 줄로 주어지며, 입력의 끝은 두 개의 0이 적힌 줄로 표시됩니다.

각 시나리오의 첫 번째 줄에는 공백으로 구분된 두 정수 NN과 MM이 주어집니다(1≤N≤2000001 \le N \le 200000, 1≤M≤2000001 \le M \le 200000). NN은 화차의 수, MM은 선로의 수입니다.

두 번째 줄에는 NN개의 음이 아닌 정수가 주어지며, 이는 화차들이 도착하는 순서대로 나열한 목표 값입니다. 일부 값은 같을 수 있으며, 그 경우 해당 화차들 사이의 순서는 중요하지 않습니다.

출력

각 시나리오마다 한 줄을 출력합니다.

모든 선로는 화차가 들어온 순서 그대로 화차를 내보내므로, 한 선로에 배정된 화차들은 이미 비내림차순으로 정렬되어 있어야 합니다. 따라서 화차들을 MM개의 선로로 비내림차순으로 배달할 수 있는 것은, 도착 순서 기준으로 각각 비내림차순인 최대 MM개의 그룹으로 나눌 수 있을 때와 정확히 같습니다.

모든 화차를 비내림차순으로 배달하는 데 필요한 최소 선로 수를 출력하세요. 만약 이 최소 값이 MM보다 크면 주어진 선로로는 배달이 불가능하며, 이 경우 대신 Transportation failed를 출력하세요.

예제4

  1. 예제 1

    입력
    5 3
    4 2 5 3 1
    5 3
    5 4 3 2 1
    0 0
    
    예상 출력
    3
    Transportation failed
    
  2. 예제 2

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

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

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