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

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

땅 고르기

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

요약
임의의 연속 구간에 a 또는 b를 더하거나 빼는 연산만으로 모든 지면 높이를 0으로 만드는 최소 연산 횟수를 구한다.
난이도

어려움10점 중 8점

유형
수학, 그리디, 정수론, 구현
정답자
아직 제출이 없습니다

문제

바이트아사르가 아주 좁은 골짜기에 집을 짓기로 했다. 공사를 시작하기 전에 먼저 땅을 평평하게 골라야 한다.

그에게는 굴착기가 두 대 있다. 첫 번째 굴착기는 골짜기에서 연속된 임의의 구간의 땅 높이를 정확히 aa 미터만큼 올리거나 내릴 수 있고, 두 번째 굴착기는 같은 방식으로 연속된 임의의 구간의 높이를 정확히 bb 미터만큼 올리거나 내릴 수 있다. 작업 전이든 후든 해당 구간이 평평할 필요는 없다.

골짜기의 초기 높이가 주어질 때, 모든 지점의 땅 높이를 00으로 만드는 데 필요한 최소 작업 횟수를 구하여라. 작업 도중에는 임의의 지점의 높이가 음수를 포함한 어떤 정수 값이든 될 수 있다.

입력

첫째 줄에 세 정수 nn, aa, bb (1≤n≤100 0001 \le n \le 100\,000, 1≤a,b≤1091 \le a, b \le 10^9)가 공백 하나로 구분되어 주어진다. nn은 골짜기의 길이(미터)이다.

둘째 줄에 nn개의 정수 h1,h2,…,hnh_1, h_2, \dots, h_n (∣hi∣≤109|h_i| \le 10^9)이 공백 하나로 구분되어 주어진다. hih_i는 골짜기를 1미터 단위로 나눈 ii번째 조각의 초기 높이(미터)이다.

출력

골짜기 전체를 평평하게(모든 조각의 높이를 00으로) 만드는 데 필요한 최소 작업 횟수를 한 줄에 출력한다. 두 굴착기로 평평하게 만드는 것이 불가능하면 −1-1을 출력한다.

힌트

첫 번째 예제의 경우, 다음 55번의 작업이 하나의 해가 된다.

  • 골짜기의 앞 2미터를 22만큼 올린다,
  • 앞 2미터를 33만큼 내린다,
  • 뒤 4미터를 22만큼 올린다,
  • 맨 뒤 1미터를 22만큼 올린다,
  • 뒤 4미터를 33만큼 내린다.

예제3

  1. 예제 1

    입력
    5 2 3
    1 2 1 1 -1
    
    예상 출력
    5
    
  2. 예제 2

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

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