HDU 1556 color the ball 树状数组

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Lydia_r/article/details/86659323

#include <bits/stdc++.h>
using namespace std;
#define N 100009
int c[N],n;

int lowbit(int i){
	return (i&(-i));
}

void add(int i,int data){
	while(i<=n){
		c[i]+=data;
		i+=lowbit(i);
	}
}

int getSum(int i){
	int sum=0;
	while(i>0){
		sum+=c[i];
		i-=lowbit(i);
	}
	return sum;
}

int main(){
	int i,a,b;
	while(scanf("%d",&n)){
		if(n==0)
			break;
			
		memset(c,0,sizeof(c));
		for(i=1;i<=n;i++){
			scanf("%d %d",&a,&b);
			add(a,1);
			add(b+1,-1);
		}	
		for(i=1;i<n;i++){
			printf("%d ",getSum(i));
		}
		printf("%d\n",getSum(i));
	}
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/Lydia_r/article/details/86659323