问题 5023 --灯泡开关

5023: 灯泡开关

题目描述

  你有一个可以调节明暗度的灯泡,这个灯泡有 $n$ 个明暗度,分别为 $1,2,3,\dots,m$。灯泡有一个遥控器,你每按一次遥控器,假设灯泡当前亮度为 $x$,按一次以后就变成了 $x+1$,如果 $x=m$,则按一次以后变成 $1$ 。每个灯泡在设计时都有一个按钮,且有一个舒适值 $k$,你可以按一次按钮,无论你现在的亮度是多少,你的亮度都会变成 $k$。按一次按钮或按一次遥控器都算是操作一次。 现在给你一个序列 $a_1,\dots,a_n$,一开始你的亮度是 $a_1$,然后你要将亮度调到 $a_2$,再到 $a_3$,再到 $a_4 \dots$ 最后到 $a_n$,完成这个亮度变化的过程会得到一个最小的操作次数 $T$,现在问你如何指定舒适值(舒适值指定之后不能改变),使得 $T$ 最小。

输入

第一行两个正整数 $n,m$。 第二行 $n$ 个整数,第 $i$ 个整数表示 $a_i$。

输出

输出一个整数,表示 $T$ 的最小值。

样例输入输出

输入#1 复制
4 6
1 5 1 4
输出#1 复制
5
输入#2 复制
10 10
10 9 8 7 6 5 4 3 2 1
输出#2 复制
45

提示

对于 $60\%$ 的数据: $n,m \leq 3000$;
对于 $90\%$ 的数据: $n,m \leq 10^5$;
对于 $100%$ 的数据:$2 \leq n,m \leq 10^6$,$1 \leq a_i \leq m, a_i \not =a_{i+1}$。

序号 标题 作者 发表时间 费用 订购数 操作