#include #include #include #include #include #include #include #include #include #include #define mkp make_pair #define mkt make_tuple #define rep(i,n) for(int i = 0; i < (n); ++i) using namespace std; typedef long long ll; const ll MOD=1e9+7; template void chmin(T &a,const T &b){if(a>b) a=b;} template void chmax(T &a,const T &b){if(a>N>>Q; vector X(N),W(N); rep(i,N) cin>>X[i]>>W[i]; vector Y(Q); rep(i,Q) cin>>Y[i]; vector ord(N); rep(i,N) ord[i]=i; sort(ord.begin(),ord.end(),[&](int a,int b){ return X[a] query(Q); rep(i,Q) query[i]=i; sort(query.begin(),query.end(),[&](int a,int b){ return Y[a] ans(Q,0); ll weg=0; int now=0; ll sum=0; for(int i=0;i0) res=(Y[q]-Y[query[i-1]])*weg; while(now=0;i--){ int q=query[i]; ll res=0; if(i=0&&X[ord[now]]>=Y[q]){ int tar=ord[now]; res+=(X[tar]-Y[q])*W[tar]; weg+=W[tar]; now--; } ans[q]+=sum+res; sum+=res; } rep(i,Q) cout<