#include<iostream>
#include<stdio.h>
#include<string>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>
#include<stack>
#include<stdio.h>
const int maxn = 32100;
using namespace std;
int la[maxn], c[maxn];
int n;
int lowbit(int t)
{
return t & (-t);
}
void add(int i, int t)
{
while (i <= maxn)
{
c[i] += t;
i += lowbit(i);
}
}
int sum(int i)
{
int sum = 0;
while (i)
{
sum += c[i];
i -= lowbit(i);
}
return sum;
}
int main()
{
while (cin>>n) {
memset(la, 0, sizeof(la));
memset(c, 0, sizeof(c));
for (int i = 1;i <= n;i++) {
int a, b;
cin>>a>>b;
add(a + 1, 1);
int temp = sum(a + 1);
la[temp]++;
}
for (int i = 1;i <= n;i++)
{
cout << la[i] << endl;
}
}
}
有个横坐标的坑点。。因为一般来说树状数组不能处理0,所以要改改。然后套模板+一些改动就可以了