func_code_string: #include <bits/stdc++.h>   using namespace std;   template <typename T>   void cmax(T& a, T b) {     a = max(a, b);   }   template <typename T>   void cmin(T& a, T b) {     a = min(a, b);   }   void _BG(const char* s) {}   template <typename T, typename... TT>   void _BG(const char* s, T a, TT... b) {     for (int c = 0; *s && (c || *s !=  , ); ++s) {       cerr << *s;       switch (*s) {         case  ( :         case  [ :         case  { :           ++c;           break;         case  ) :         case  ] :         case  } :           --c;           break;       }     }     cerr <<   =   << a;     if (*s) {       cerr <<  ,  ;       _BG(++s, b...);     } else       cerr << endl;   }   bool RD(void) { return true; }   bool RD(char& a) { return scanf(  %c , &a) == 1; }   bool RD(char* a) { return scanf( %s , a) == 1; }   bool RD(double& a) { return scanf( %lf , &a) == 1; }   bool RD(int& a) { return scanf( %d , &a) == 1; }   bool RD(long long& a) { return scanf( %lld , &a) == 1; }   template <typename T, typename... TT>   bool RD(T& a, TT&... b) {     return RD(a) && RD(b...);   }   void PT(const char a) { putchar(a); }   void PT(const char* a) { fputs(a, stdout); }   void PT(char* a) { fputs(a, stdout); }   void PT(const double a) { printf( %.16f , a); }   void PT(const int a) { printf( %d , a); }   void PT(const long long a) { printf( %lld , a); }   template <char sep =    , char end =   n >   void PL(void) {     if (end) PT(end);   }   template <char sep =    , char end =   n , typename T, typename... TT>   void PL(const T a, const TT... b) {     PT(a);     if (sizeof...(b) && sep) PT(sep);     PL<sep, end>(b...);   }   const long long inf = 4e10;   const int N = 106;   int n, r, a[N];   pair<int, int> p[N];   long long d[N];   bool used[N];   long long dis(int i, int j) {     return r * (abs(p[i].first - p[j].first) + abs(p[i].second - p[j].second)) -            a[i];   }   int main() {     RD(n, r);     for (int i(2), _B((n - 1) + 1); i < _B; ++i) RD(a[i]);     for (int i(1), _B((n) + 1); i < _B; ++i) RD(p[i].first, p[i].second);     fill_n(d, n + 1, inf);     d[1] = 0;     for (int u = 1, v; u != n; u = v) {       used[u] = 1;       v = 0;       for (int i(1), _B((n) + 1); i < _B; ++i)         if (!used[i]) {           cmin(d[i], d[u] + dis(u, i));           if (d[i] < d[v]) v = i;         }     }     PL(d[n]);   }   