func_code_string: #include <bits/stdc++.h>   using namespace std;   mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());   mt19937 rnf(2106);   const int N = 200005;   int n, m;   int x[N], y[N];   int d[N];   queue<int> q[N];   int dist(int x1, int y1, int x2, int y2) { return abs(x1 - x2) + abs(y1 - y2); }   int ans[N];   bool stg(int s) {     for (int i = 1; i <= m; ++i) {       while (!q[d[i]].empty()) q[d[i]].pop();     }     for (int i = 1; i <= m; ++i) q[d[i]].push(i);     for (int i = 0; i < n; ++i) ans[i] = -1;     for (int i = s; i < n; i += 2) {       int dd = dist(x[i], y[i], x[(i - 1 + n) % n], y[(i - 1 + n) % n]) +                dist(x[i], y[i], x[(i + 1) % n], y[(i + 1) % n]);       if (q[dd].empty()) return false;       ans[i] = q[dd].front();       q[dd].pop();     }   }   void solv() {     scanf( %d%d , &n, &m);     for (int i = 0; i < n; ++i) scanf( %d%d , &x[i], &y[i]);     for (int i = 1; i <= m; ++i) {       scanf( %d , &d[i]);     }     if (stg(0)) {       printf( YES n );       for (int i = 0; i < n; ++i) printf( %d  , ans[i]);       printf(  n );     } else if (stg(1)) {       printf( YES n );       for (int i = 0; i < n; ++i) printf( %d  , ans[i]);       printf(  n );     } else       printf( NO n );   }   int main() {     solv();     return 0;   }   