树状数组 区间应用模版题
代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <queue>
#include <map>
using namespace std;
int tree[100005];
int n;
int lowbit(int x)
{
return x&(-x);
}
int update(int x,int add)
{
while(x>0)
{
tree[x]+=add;
x-=lowbit(x);
}
}
int search(int x)
{
int sum=0;
while(x<=n)
{
sum+=tree[x];
x+=lowbit(x);
}
return sum;
}
int main()
{
while(scanf("%d",&n),n)
{
memset(tree,0,sizeof(tree));
int left,right;
for(int i=1;i<=n;i++)
{
scanf("%d%d",&left,&right);
update(right,1);
update(left-1,-1);
}
for(int i=1;i<=n;i++)
if(i!=n)
printf("%d ",search(i));
else
printf("%d\n",search(i));
}
}