思路:每一段从起点到终点的路肯定是要走的,然后再加上中间的路,即每个终点到最近的起点的距离。
代码:
#include<bits/stdc++.h>
using namespace std;
#define maxn 100000
#define read(x) scanf("%d",&x)
#define ll long long
int n,m;
int X[maxn+5],Y[maxn+5];
int main() {
read(n),read(m);
ll ans=0;
for(int i=1;i<=n;i++) {
int x,y;
read(x),read(y);
X[i]=x,Y[i]=y;
ans+=abs(y-x);
}
X[n+1]=m;
sort(X+1,X+2+n);
sort(Y+1,Y+2+n);
for(int i=1;i<=n+1;i++) {
ans+=abs(Y[i]-X[i]);
}
printf("%lld",ans);
return 0;
}