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) 收藏 举报
浙公网安备 33010602011771号