这道题就是一个简单的一维差分的问题。不用差分的话就是70分。
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long n,m,k;
cin>>n>>m>>k;
vector<long long> d(200005,0);
vector<long long> result(200005,0);
for(long long i=0;i<n;i++)
{
long long t,c;
cin>>t>>c;
long long left=max((long long)0,t-c+1);
long long right=t;
d[left]++;
d[right+1]--;
}
result[0]=d[0];
for(long long i=1;i<200005;i++)
{
result[i]=result[i-1]+d[i];
}
for(long long i=0;i<m;i++)
{
long long q;
cin>>q;
cout<<result[q+k]<<endl;
}
return 0;
}