poj 2352.Stars

来源:互联网 发布:tensorflow使用的语言 编辑:程序博客网 时间:2024/04/29 07:47

Stars

#include<stdio.h>const int MAXN=15000;const int MAXX=32000+1;int N, X, Y;int c[MAXN+1];int ans[MAXN];//求整数x最低有效位的值并返回. int LowBit(int x);//求原数组下标从1到ind的各元素的和并返回. int GetSum(int ind);//原数组下标为ind元素增量为diff时,修正相应树状数组. void Modify(int ind, int diff);int main(){int i;while(scanf("%d",&N)!=EOF){for(i=0;i<N;i++){ans[i]=0;}for(i=0;i<=MAXN;i++){c[i]=0;}for(i=0;i<N;i++){scanf("%d%d",&X,&Y);X++;int level=GetSum(X);ans[level]++;Modify(X,1);}//输出结果for(i=0;i<N;i++){printf("%d\n",ans[i]);} }return 0;}int LowBit(int x){return x&(x^(x-1));}int GetSum(int ind){int sum=0;while(ind>0){sum+=c[ind];ind-=LowBit(ind);}return sum;}void Modify(int ind, int diff){while(ind<=MAXN){c[ind]+=diff;ind+=LowBit(ind);}}