题意:
思路:
其实就是每次在L,R区间加一,然后问你每个区间加了几次,那么我们差分,每次让D[L]++,D[R+1]–,之后就好了。
代码
#include <bits/stdc++.h>
using namespace std;
const int maxn = 100000 + 10;
int D[maxn];
int main()
{
int n ;
while(scanf("%d",&n)!=EOF)
{
memset(D,0,sizeof(D));
if(n == 0) break;
int l,r;
for(int i = 1 ; i <= n ; i++)
{
scanf("%d%d",&l,&r);
D[l]++,D[r+1]--;
}
for(int i = 1 ; i <= n ; i++) D[i] += D[i-1];
for(int i = 1 ; i < n ; i++) cout<<D[i]<<" ";
cout<<D[n]<<endl;
}
}