T235568 弹幕考察

#include <iostream>
#include <algorithm>
using namespace std;
#define Max 100000
int main()
{
int zuo[Max];int you[Max];int n,m,a1,a2,ans;
cin>>n>>m;
for(int i=0;i<n;i++)
{cin>>zuo[i]>>you[i];you[i]+=zuo[i]-1;}//记录输入的代码(开区间要减一)
sort(zuo,zuo+n);
sort(you,you+n);//把记录下来的代码左右两端分别排序(相当于离散),从而分别得到弹幕左端和右端的顺序
for(int i=0;i<m;i++)
{
cin>>a1>>a2;a2+=a1;//输入问题 (考察区间都是闭区间)
ans=lower_bound(zuo,zuo+n,a2)-zuo;//函数的用处:找出左端的弹幕数组里小于a2的最大数 (求a2左端弹幕的数量)
ans-=lower_bound(you,you+n,a1)-you;//求出在a1有端弹幕的数量
cout << ans<< endl;
}
return 0;
}

posted @ 2022-05-04 22:13  xh小小孩  阅读(20)  评论(0编辑  收藏  举报