入门题,一个简单的树状数组 加一下理解
无讲解
// god with me
//#pragma GCC optimize(1)
//#pragma GCC optimize(2)
//#pragma GCC optimize(3,"Ofast","inline")
//#include <bits/stdc++.h>
//#include <bits/stdc++.h>
#include <cmath>
#include <math.h>
#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
#define inf 0x7fffffff
#define ll long long
//#define int long long
//#define double long double
//#define double long long
#define re int
//#define i int i
//#define void inline void
#define eps 1e-8
//#define mod 1e9+7
#define ls(p) p<<1
#define rs(p) p<<1|1
#define pi acos(-1.0)
#define pb push_back
#define mk make_pair
#define P pair < int , int >
// typedef long long s64;
using namespace std;
const int mod=1e6+7;
const int N=2e4+5;//?????????? 4e8
const int M=1e5+10;
const int maxn=32005;
int ans[maxn];
int c[maxn];
int n;
int lowbit(int x)
{
return (-x)&x;
}
void add(int x,int val)
{
while(x<=maxn)
{
c[x]+=val;
x+=lowbit(x);
}
}
int sum(int i)
{
int s=0;
while(i>0)
{
s+=c[i];
i-=lowbit(i);
}
return s;
}
void solve()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
int x,y;
scanf("%d%d",&x,&y);
x++;
ans[sum(x)]++;
add(x,1);
}
for(int i=0;i<n;i++)printf("%d\n",ans[i]);
}
signed main()
{
// ios::sync_with_stdio(false);
int T=1;
// cin>>T;
for(int index=1;index<=T;index++)
{
// printf("Case %d:\n",index);
solve();
// puts("");
}
return 0;
}