题意:给你n个区间,然后给出m个查询区间,对于每次询问,输出这个区间里多少个点被不少于k个区间覆盖
解析:求两次前缀和就好了
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int a[300000];
int s[300000];
int p[300000];
int main(){
int n, m, k;
while(~scanf("%d%d%d", &n, &k, &m)){
memset(a, 0, sizeof a);
memset(s, 0, sizeof s);
memset(p, 0, sizeof p);
for(int i = 1; i <= n; i++){
int l, r;
scanf("%d%d", &l, &r);
a[l]++;
a[r + 1]--;
}
for(int i = 1; i <= 210001; i++){
s[i] = s[i - 1] + a[i];
}
for(int i = 1; i <= 210001; i++){
if(s[i] >= k) p[i] = p[i - 1] + 1;
else p[i] = p[i - 1];
}
for(int i = 1; i <= m; i++){
int l, r;
scanf("%d%d", &l, &r);
printf("%d\n", p[r] - p[l - 1]);
}
}
return 0;
}