func_code_string: #include <bits/stdc++.h>   using namespace std;   const int inf = 0x3f3f3f3f;   const long long infll = 0x3f3f3f3f3f3f3f3fLL;   inline long long read() {     long long x = 0, f = 1;     char ch = getchar();     while (ch <  0  || ch >  9 ) {       if (ch ==  - ) f = -1;       ch = getchar();     }     while (ch >=  0  && ch <=  9 ) {       x = x * 10 + ch -  0 ;       ch = getchar();     }     return x * f;   }   set<pair<long long, int> > s;   pair<long long, long long> a[200005];   pair<pair<long long, long long>, int> brige[200005];   set<pair<long long, int> >::iterator it;   int ans[200005];   int main() {     int n = read();     int m = read();     for (int i = 1; i <= n; i++) {       cin >> a[i].first >> a[i].second;     }     for (int i = 1; i < n; i++) {       brige[i] = make_pair(           make_pair(a[i].second - a[i + 1].first, a[i].first - a[i + 1].second),           i);     }     sort(brige + 1, brige + n);     for (int i = 1; i <= m; i++) {       long long kiss;       cin >> kiss;       s.insert(make_pair(kiss, i));     }     for (int i = 1; i < n; i++) {       long long r = -brige[i].first.second;       long long l = -brige[i].first.first;       it = s.lower_bound(make_pair(r, inf));       if (it == s.begin()) {         printf( No n );         return 0;       }       it--;       if (it->first < l) {         printf( No n );         return 0;       }       ans[brige[i].second] = it->second;       s.erase(it);     }     printf( Yes n );     for (int i = 1; i < n; i++) {       printf( %d  , ans[i]);     }     return 0;   }   