题目链接:
http://codeforces.com/problemset/problem/816/B
题解:
前缀和的经典应用
代码:
#include <cmath>
#include <cstdio>
#include <string>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define met(a,b) memset(a,b,sizeof(a))
#define inf 0x3f3f3f3f
const int maxn = 2e5;
int num[maxn+10];
int cnt[maxn];
int main()
{
int N,K,Q;
met(num,0);
met(cnt,0);
scanf("%d%d%d",&N,&K,&Q);
for(int i=0;i<N;i++)
{
int left,right;
scanf("%d%d",&left,&right);
num[left]++;
num[right+1]--;
}
for(int i=1;i<=maxn;i++)
{
num[i]+=num[i-1];
if(num[i]>=K)
cnt[i]++;
}
for(int i=1;i<=maxn;i++)
cnt[i]+=cnt[i-1];
while(Q--)
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d\n",cnt[b]-cnt[a-1]);
}
}