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

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

수열 변환

면접 대비

시간 제한2초메모리 제한512 MB

요약
음이 아닌 정수 수열이 주어질 때, 어떤 위치에서 1,2,...,h가 연속으로 나타나도록 만들기 위해 필요한 최소 증가 연산 횟수를 구하거나 불가능하면 -1을 출력한다.
난이도

보통10점 중 6점

유형
배열, 슬라이딩 윈도우, 누적 합, 그리디
정답자
아직 제출이 없습니다

문제

수학 선생님은 콜랴를 매우 싫어해서 항상 그를 칠판 앞으로 불러 가장 어려운 문제를 풀게 한다.

오늘도 선생님은 칠판에 음이 아닌 정수 nn개로 이루어진 수열 a1,a2,…,ana_1, a_2, \ldots, a_n을 적고 콜랴를 칠판으로 불렀다. 선생님은 콜랴가 한 번의 행동으로 임의의 수 하나를 지우고 그 자리에 1 더한 수를 적는 것을 허락한다. 선생님은 콜랴에게 최소한의 행동으로 이 수열 어딘가에 1부터 hh까지의 수가 연속으로 나타나도록 만들라고 요구한다.

콜랴가 어떤 ii에 대해 ai=1a_i=1, ai+1=2a_{i+1}=2, ..., ai+h−1=ha_{i+h-1}=h가 되도록 만드는 데 필요한 최소 행동 수를 구하거나, 그것이 불가능하여 선생님이 불쌍한 콜랴를 또 마음대로 괴롭히는 경우를 알아내자.

입력

입력 파일의 첫째 줄에는 두 자연수 nn과 hh가 주어진다 (1≤h≤n≤200 0001 \le h \le n \le 200\,000). 둘째 줄에는 적힌 수열의 원래 값 aia_i nn개가 주어진다 (0≤ai≤n0 \le a_{i} \le n).

출력

출력 파일의 한 줄에 콜랴가 과제를 수행할 수 있는 최소 행동 수를 출력하거나, 수행할 수 없으면 −1-1을 출력한다.

힌트

첫 번째 예에서 콜랴는 세 번째 수를 두 번 1씩 증가시키고 네 번째 수를 한 번 증가시켜야 한다. 그러면 수열은 1, 1, 2, 3이 되고 i=2i=2에 대해 조건이 성립한다.

두 번째 예에서는 수열에 1과 2가 연속으로 나타나게 할 수 없다.

예제2

  1. 예제 1

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

    입력
    3 2
    1 3 2
    
    예상 출력
    -1