upper_bound(a) 为返回map 中第一个大于a的key的位置
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m;
int a,b;
cin>>n>>m;
map<int,int> works;
for(int i=0;i<n;i++){
cin>>a>>b;
works.insert({a,b});
}
int pay = 0;
for(map<int,int>::iterator p = works.begin(); p!= works.end(); p++){
pay = max(pay,p->second);
p->second = pay;
}
map<int,int>::iterator p;
for(int i=0;i<m;i++){
cin>>a;
p = works.upper_bound(a);
p--;
cout<<p->second<<endl;
}
}