ĐIỀU KHIỂN MỨC MÀU

(lcd.*)

Vinh mới mua một màn hình LCD của công ty công nghệ StarTech mới thiết kế có độ phân giải màu sắc gồm \(M\) mức màu, đó là mức 1, mức 2, ..., mức \(M\). Thiết bị điều khiển của màn hình gồm 2 nút bấm điều khiển. Nút bấm thứ nhất được gọi là nút “Inc”. Khi bấm vào nút này, nếu màn hình đang ở mức màu \(i\ (i\ < \ M)\) thì sẽ chuyển lên mức màu \(i\ + \ 1\), nếu \(i\ = \ M\) thì sẽ chuyển về mức màu 1. Nút bấm thứ 2 được gọi là nút “favorite”, khi bấm vào nút này mức màu của màn hình sẽ chuyển về mức \(X\), với \(X\) là một thông số được thiết lập trước.

Màn hình thì rất đẹp, chiếc điều khiển cũng rất đẹp. Vinh muốn thử chiếc điều khiển và kiểm tra các mức màu của màn hình. Vinh đưa ra một dãy mức màu \(A_{1},A_{2}\ldots,A_{N}\) (1 \(\leq A_{i} \leq M\), \(A_{i}
eq A_{i + 1}\)
) và sẽ điều khiển để màn hình từ mức \(A_{i}\) chuyển sang mức \(A_{i + 1}\) (\(i\ = \ 1,\ 2,\ ...,\ N\ - \ 1\)) bằng cách bấm vào các nút bấm. Ban đầu màn hình ở mức màu \(A_{1}\). Gọi \(S(X)\) là tổng số lần bấm ít nhất để chuyển từ mức màu \(A_{1}\) sang \(A_{2}\), từ \(A_{2}\) sang \(A_{3}\), ..., từ \(A_{N - 1}\) sang \(A_{N}\) ứng với thông số thiết lập là mức \(X\).

Yêu cầu: Tìm giá trị nhỏ nhất của \(S(X)\) khi \(X\) thay đổi từ 1 đến \(M\).

Dữ liệu vào:

  • Dòng thứ nhất ghi 2 số nguyên dương \(N\)\(M\).

  • Dòng thứ hai ghi \(N\) số nguyên \(A_{1},A_{2}\ldots,A_{N}\) (1 \(\leq A_{i} \leq M\)).

Kết quả: gồm một số nguyên là giá trị nhỏ nhất của \(S(X)\) khi \(X\) thay đổi từ 1 đến \(M\).

Ví dụ:

Input Output Giải thích
4 5
1 2 4 5
3 - Với \(X = 1\): Chuyển từ 1 \(\rightarrow\) 2, bấm 1 lần nút “Inc”; từ 2 \(\rightarrow\) 4, bấm 2 lần nút “Inc”; chuyển từ 4 \(\rightarrow\) 5 bấm 1 lần nút “Inc”. Tổng 1 + 2 + 1 = 4, tức là \(S(1)\ = \ 4\).
- Với \(X\ = \ 2:\) Chuyển từ 1 \(\rightarrow\) 2, bấm 1 lần nút “Inc”; từ 2 \(\rightarrow\) 4, bấm 2 lần nút “Inc”; chuyển từ 4 \(\rightarrow\) 5 bấm 1 lần nút “Inc”. Tổng 1 + 2 + 1 = 4, tức là \(S(2)\ = \ 4\).
- 𝑉ớ𝑖\(\ X\ = \ 3\): Chuyển từ 1 \(\rightarrow\) 2, bấm 1 lần nút “Inc”; từ 2 \(\rightarrow\) 4, bấm 2 lần nút “Inc”; chuyển từ 4 \(\rightarrow\) 5 bấm 1 lần nút “Inc”. Tổng 1 + 2 + 1 = 4, tức là \(S(3)\ = \ 4\).
- 𝑉ớ𝑖 𝑋 = 4: Chuyển từ 1 \(\rightarrow\) 2, bấm 1 lần nút “Inc”; từ 2 \(\rightarrow\) 4, bấm 1 lần nút “favorite”; chuyển từ 4 \(\rightarrow\) 5 bấm 1 lần nút “Inc”. Tổng 1 + 1 + 1 = 3, tức là \(S(4)\ = \ 3\).
- Với \(X\ = \ 5\): Chuyển từ 1 \(\rightarrow\) 2, bấm 1 lần nút “Inc”; từ 2 \(\rightarrow\) 4, bấm 2 lần nút “Inc”; chuyển từ 4 \(\rightarrow\) 5 bấm 1 lần nút “favorite”. Tổng 1 + 2 + 1 = 4, tức là \(S(5)\ = \ 4\).
Vậy giá trị nhỏ nhất của \(S(X)\) là 3.
2 3
2 1
1 - Với \(X\ = \ 1\): Chuyển từ 2 \(\rightarrow\) 1, bấm 1 lần nút “favorite”.
- Với \(X = \ 2\): Chuyển từ 2 \(\rightarrow\) 1, bấm 2 lần nút “Inc”.
- Với \(X = \ 3\): Chuyển từ 2 \(\rightarrow\) 1, bấm 2 lần nút “Inc”.
Vậy giá trị nhỏ nhất của \(S(X)\) là 1.

Giới hạn:

  • Có 25% số test ứng với 2 \(\leq N,M \leq 10^{5}\); 1 \(\leq A_{1} < A_{2} < \ldots < A_{N} \leq M\);

  • Có 25% số test ứng với 2 \(\leq N,M \leq 10^{3}\);

  • Có 50% số test ứng với 2 \(\leq N,M \leq 10^{5}\).

Bạn cần đăng nhập để nộp bài

hpcode.edu.vn
Code tích cực
Trong 24h
  1. npk1605 (5/10)
  2. sythai (4/5)
  3. hungeazy08 (4/26)
Trong 7 ngày
  1. nguyenanhvu (40/64)
  2. khieuquan (35/59)
  3. ngokhang (27/55)
Trong 30 ngày
  1. quechi (85/105)
  2. dangphong3108 (79/125)
  3. kiennhientv (79/179)
Thống kê
AC/Sub: 97887/180710
Pascal: 17121
C++: 130348
Python: 33199
Lượt xem/tải tests: 38905

Lưu Hải Phong - 2020
[email protected]