차이를 MM 이상으로

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

요약
수열에서 이웃한 항의 차이가 모두 M 이상이 되도록 최소 개수의 항을 바꾸고, 불가능하면 -1을 출력한다.
난이도

어려움10점 중 8점

유형
동적 계획법, 그리디, 구현, 수학
정답자
아직 제출이 없습니다

문제

동우는 길이 NN의 수열 A=\left\[ A\_1,A\_2,\cdots ,A\_N \right]을 분석하고 있다. 동우는 한 번의 시행으로 수열 AA의 한 항 A_iA\_i를 원하는 정수로 바꿀 수 있다. 귀찮음이 많은 동우는 가능한 최소한의 시행으로 모든 이웃한 항의 차이를 MM 이상으로 만들고 싶어 한다. 즉, 모든 1≤i\<N1\leq i\<N에 대하여 ∣A_i+1−A_i∣≥M\lvert A\_{i+1}-A\_i\rvert\geq M으로 만드는 것이 목표이다. 동우를 도와 필요한 최소 시행 횟수를 구해보자.

입력

첫 번째 줄에 정수 N(1≤N≤106)N(1\leq N\leq 10^6)과 M(1≤M≤1012)M(1\leq M\leq 10^{12})이 공백으로 구분되어 주어진다.

두 번째 줄에 NN개의 정수 A_1,A_2,⋯ ,A_N(1≤A_i≤1012)A\_1,A\_2,\cdots ,A\_N(1\leq A\_i\leq 10^{12})이 공백으로 구분되어 주어진다.

출력

첫 번째 줄에 모든 이웃한 항의 차이를 MM 이상으로 만들기 위해 필요한 최소 시행 횟수를 출력한다.

만약 불가능하다면 -1을 출력한다.

예제3

  1. 예제 1

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

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

    입력
    5 51234652376
    1000000000000 985746283947 1000000000000 583726473871 252333425341
    
    예상 출력
    1