70分:
运行超时
# include <iostream>
using namespace std;
const int N=100010;
int n,m,k,t;
pair<int,int> pr[N];
int main(void) {
cin>>n>>m>>k;
for(int i=0; i<n; i++)
cin>>pr[i].first>>pr[i].second;
while(m--) {
int cnt=0;
cin>>t;
for(int i=0; i<n; i++)
if(t+k<=pr[i].first && pr[i].first<=t+k+pr[i].second-1)
cnt++;
printf("%d\n",cnt);
}
return 0;
}
100过了
# include <iostream>
# include <cmath>
using namespace std;
const int N=100010,M=200010;
int n,m,k;
pair<int,int> pr[N];
int q[M];
int main(void) {
cin>>n>>m>>k;
for(int i=0; i<n; i++) {
cin>>pr[i].first>>pr[i].second;
int x=pr[i].first-k-pr[i].second+1;//做核酸的最早时刻
int y=pr[i].first-k;//做核酸的最晚时刻
if(y<=0)continue;
x=max(1,x);
q[x]++;
q[y+1]--;
}
for(int i=1; i<M; i++)q[i]+=q[i-1];
while(m--) {
int t;
cin>>t;
cout<<q[t]<<endl;
}
return 0;
}