/*赋上自己写的,大家帮着看一下,看哪里不符题意*/
#include<stdio.h>
#include<math.h>
typedef struct {
long data;
int flag;
}Blink;
Blink a[1000];
int Find_Min(Blink *a,int n,long m) //返回求的最小值
{
int k,i=0;
long t,min;
while(i<n&&a[i].flag==1)
{
i++;
}
//printf("%d\n",i);
if(a[i].data>m)
{
min=a[i].data-m;
}
else
{
min=m-a[i].data;
}
k=i;
i++;
while(i<n)
{
if(a[i].flag==0)
{
if(m>a[i].data)
{
t=m-a[i].data;
}
else
{
t=a[i].data-m;
}
if(min>t)
{
min=t;
k=i;
}
}
i++;
}
return(k);
}
long Sum(Blink *a,int n,long l)
{
long sum=0,num,t=0;
int i=0,k;
num=l;
while(i<n)
{
k=Find_Min(a,n,num);
a[k].flag=1;
//printf("%d :",k);
if(num>a[k].data)
{
t+=num-a[k].data;
}
else
{
t+=a[k].data-num;
}
//printf("%ld\n",t);
sum+=t;
num=a[k].data;
i++;
}
return(sum);
}
int main()
{
int i,n;
long l;
scanf("%d%ld",&n,&l);
for(i=0;i<n;i++)
{
scanf("%ld",&a[i].data);
a[i].flag=0;
}
printf("%ld\n",Sum(a,n,l));
return(0);
}
倚天照海花无数,流水高山心自知。