#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
#define MAXN 32001
int sum[MAXN];
int result[MAXN];
int n;
int lowbit(int k)
{
return k&(-k);
}
int GetSum(int n)
{
int s = 0;
while(n > 0)
{
s += sum[n];
n -= lowbit(n);
}
return s;
}
void update(int i,int v)
{
while(i <= MAXN)
{
sum[i] += v;
i += lowbit(i);
}
}
int main()
{
cin>>n;
memset(sum,0,sizeof(sum));
memset(result,0,sizeof(result));
for(int i = 0; i < n; i++)
{
int x,y;
cin>>x>>y;
result[GetSum(x+1)]++;
update((x+1),1);
}
for (int i = 0; i < n; ++i)
{
cout<<result[i]<<endl;
}
return 0;
}
poj 2352树状数组
最新推荐文章于 2022-09-24 16:05:55 发布