#include<stdio.h>
#include<algorithm>
using namespace std;
void alter(int i,int n,int a[],int v){
while(i<=n){
a[i]+=v;
i+=i&-i;
}
}
int search(int i,int a[]){
int sum=0;
while(i){
sum+=a[i];
i-=i&-i;
}
return sum;
}
int main() {
int n;
while(~scanf("%d",&n)) {
if(!n)
break;
int a[100005]={0};
for(int i=1;i<=n;i++){
int l,r;
scanf("%d %d",&l,&r);
alter(l,n,a,1);
alter(r+1,n,a,-1);
}
for(int i=1;i<=n;i++)
printf("%d%c",search(i,a),(i==n?'\n':' '));
}
return 0;
}
HDU1556 (树状数组)
最新推荐文章于 2021-05-21 02:12:33 发布