<1>来一个区间区间内所有点的加一,b[l]+=1,b[r+1]-=1;
<2>计算前缀和为每个点被区间覆盖的次数,覆盖次数大于等于要求的k,设置这个点为1,f[i]=1;
<3>计算f的前缀和,以便计算区间为[x,y]点内满足条件的点数量:f[y]-f[x-1]
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 2e5+10;
int b[N];
int f[N];
int main()
{
int n,k,q;
cin>>n>>k>>q;
for (int i = 0; i < n; i ++ )
{
LL l,r;
cin>>l>>r;
b[l]+=1;
b[r+1]-=1;
}
for(int i=1;i<=N;i++)
{
b[i]+=b[i-1];
if(b[i]>=k)
f[i]++;
f[i]+=f[i-1];
}
while(q--)
{
int x,y;
cin>>x>>y;
cout<<f[y]-f[x-1]<<endl;
}
}