poj 2352(树状数组)

#include<iostream>
#include
<cstdio>
using namespace std;
#define max 32001
#define N 15001
int tree[max];
int level[N];
int getsum(int idx)
{
int sum=0;
while(idx>0)
{
sum
+=tree[idx];
idx
-=(idx&-idx);
}
return sum;
}
void addval(int idx,int val)
{
while(idx<=max)
{
tree[idx]
+=val;
idx
+=(idx&-idx);
}
}
int main()
{
int n,i,x,y;
while(scanf("%d",&n)!=EOF)
{
for(i=1;i<=n;i++)
{
scanf(
"%d%d",&x,&y);
x
++;
addval(x,
1);
++level[getsum(x)-1];
}
for(i=0;i<n;i++)
printf(
"%d\n",level[i]);
}
}

posted on 2011-06-05 16:10  thinking001  阅读(67)  评论(0)    收藏  举报

导航