#include<bits/stdc++.h>
#define N 100100
using namespace std;
typedef long long LL;
inline void read(int &a){
a=0;char ch=getchar();
while(ch<'0'||ch>'9') ch=getchar();
while(ch<='9'&&ch>='0') a=a*10+ch-'0',ch=getchar();
}
int a[N],n,m;
LL add[N],del[N],ans=1e18;
int main(){
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++) read(a[i]);
for(int i=0;i<n-1;i++) {
int x=a[i],y=a[i+1];
if(x<y){
add[1]+=(y-x);
add[x+1]-=(y-x);
del[x+1]--;
add[y+1]+=(y-x);
add[x+1]+=y+1;
del[y+1]++;
add[y+1]-=y+1;
}
else if(x>y){
add[1]+=y+1;
del[1]--;
add[y+1]-=y+1;
add[y+1]+=m-x+y;
del[y+1]++;
add[x+1]-=m-x+y;
add[x+1]+=y+1+m;
del[x+1]--;
}
}
for(int i=1;i<=m;i++){
add[i]+=add[i-1];
del[i]+=del[i-1];
ans=min(ans,add[i]+LL(i)*del[i]);
}
printf("%lld\n",ans);
return 0;
}
AtCoder Regular Contest 077 E - guruguru
最新推荐文章于 2019-04-09 17:37:38 发布