func_code_string: #include <bits/stdc++.h>   using namespace std;   const double PI = acos(-1.0);   const int N = 10003;   const long long oo = 1e18;   int get(int x, int l, int r) {     if (x <= l) return l - x;     if (r <= x) return x - r;     return 0;   }   int l[N], r[N], zn[N];   long long d1[N], d2[N];   vector<int> st;   map<int, int> mp;   int main() {     if (0) {       freopen( input.txt ,  w , stdout);       return 0;     }     int i, u, n, m, x, li, ri, xp;     long long tt, ans;     scanf( %d%d , &n, &x);     st.push_back(x);     for (i = 0; i < n; ++i) {       scanf( %d%d , &li, &ri);       l[i] = li;       r[i] = ri;       st.push_back(li);       st.push_back(ri);     }     sort(st.begin(), st.end());     m = 0;     for (i = 0; i < st.size(); ++i)       if ((i + 1 == st.size()) || (st[i] != st[i + 1])) {         zn[m] = st[i];         mp[st[i]] = m++;       }     xp = mp[x];     for (i = 0; i < m; ++i) d1[i] = oo;     d1[xp] = 0;     for (u = 0; u < n; ++u) {       for (i = 0; i < m; ++i) d2[i] = oo;       li = l[u];       ri = r[u];       tt = oo;       for (i = 0; i < m; ++i) {         if (i) tt += zn[i] - zn[i - 1];         tt = min(tt, d1[i]);         if (tt >= oo) {           tt = oo;           continue;         }         d2[i] = min(d2[i], tt + get(zn[i], li, ri));       }       tt = oo;       for (i = m - 1; i >= 0; --i) {         if (i != m - 1) tt += zn[i + 1] - zn[i];         tt = min(tt, d1[i]);         if (tt >= oo) {           tt = oo;           continue;         }         d2[i] = min(d2[i], tt + get(zn[i], li, ri));       }       for (i = 0; i < m; ++i) d1[i] = d2[i];     }     ans = oo;     for (i = 0; i < m; ++i) ans = min(ans, d1[i]);     cout << ans << endl;     return 0;   }   