#include using namespace std; typedef long long ll; typedef pair P; #define p_ary(ary,a,b) do { cout << "["; for (int count = (a);count < (b);++count) cout << ary[count] << ((b)-1 == count ? "" : ", "); cout << "]\n"; } while(0) #define p_map(map,it) do {cout << "{";for (auto (it) = map.begin();;++(it)) {if ((it) == map.end()) {cout << "}\n";break;}else cout << "" << (it)->first << "=>" << (it)->second << ", ";}}while(0) templateostream& operator<<(ostream& os,const pair& a) {os << "(" << a.first << ", " << a.second << ")";return os;} const char newl = '\n'; int main() { int n,q; cin >> n >> q; vector> a(n),x(q); for (int i = 0;i < n;++i) cin >> a[i].first >> a[i].second; for (int i = 0;i < q;++i) { cin >> x[i].first; x[i].second = i; } sort(a.begin(),a.end()); sort(x.begin(),x.end()); vector ans(q); int j = 0; ll sum = 0,l = 0,r = 0; for (int i = 0;i < n;++i) { if (a[i].first < x[0].first) { sum += (x[0].first-a[i].first)*a[i].second; l += a[i].second; j = i+1; } else { sum += (a[i].first-x[0].first)*a[i].second; r += a[i].second; } } ans[x[0].second] = sum; for (int i = 1;i < q;++i) { sum += (l-r)*(x[i].first-x[i-1].first); while (j < n && a[j].first < x[i].first) { sum += 2*(x[i].first-a[j].first)*a[j].second; l += a[j].second; r -= a[j].second; j++; } ans[x[i].second] = sum; } for (int i = 0;i < q;++i) cout << ans[i] << newl; }