#3. 「CTSC2009」序列变换

「CTSC2009」序列变换

题目描述

给定一个整数序列X1,X2,X3,...,XnX_1,X_2,X_3,...,X_n和三个正整数Q,A,BQ,A,B满足:

1XiQ1\leq X_i\leq Q对于任意1in1\leq i\leq n

XiXi+1X_i\leq X_{i+1}对于任意1i<n1\leq i < n

AQ1n1A\leq\frac{Q-1}{n-1}ABA\leq B

对于任意1in1\leq i\leq n,作如下变换:Yi=Xi+ΔiY_i=X_i+\Delta_i,其中Δi\Delta_i是一个整数。使得新序列YY满足如下性质:

1YiQ1\leq Y_i\leq Q对于任意1in1\leq i\leq n

Yi+1Yi[A,B]Y_{i+1}-Y_i\in[A,B]对于任意1i<n1\leq i < n

对于这样一个变换,所需的变换代价定义为:

TransformCost(X,Y)=i=1nΔiTransformCost(X,Y)=\sum_{i=1}^n|\Delta_i|

本题的任务即为寻找一个变换,使得TransformCost(X,Y)TransformCost(X,Y)最小化。

输入格式

第一行四个整数n,Q,A,Bn,Q,A,B

第二行nn个整数XiX_i

输出格式

一行一个整数,最小的TransformCost(X,Y)TransformCost(X,Y)

样例

输入

3 6 2 2

1 4 6

输出

1

数据范围与提示

可以将序列变换为2 4 6或者1 3 5。前者变换代价为11,后者为22。因此最小TransformCostTransformCost11

对于1010%的数据,N100,Q10000,1A,B100N \leq 100, Q \leq 10000, 1\leq A, B \leq 100

对于3030%的数据,N10000,Q10000,1A,B100N \leq 10000, Q \leq 10000, 1\leq A, B \leq 100

对于6060%的数据,N10000,Q109,1A,BQN \leq 10000, Q \leq 10^9, 1\leq A, B \leq Q

对于100100%的数据,N500000,Q109,1A,BQN \leq 500000, Q \leq 10^9, 1\leq A, B \leq Q