啊,这鬼畜的输入。
树状数组,排序后x坐标是从小到大的,所以维护y就行了。先查询,后更新。
要注意0,lowbit(0) = 0,就自然而然的TLE了
#include <cstdio>
#include <cstring>
#include <algorithm>
#define f first
#define s second
using namespace std;
typedef pair<int,int> PII;
const int N = 32010;
PII a[N];
int n,c[N],id[N],cnt[N];
inline int lowbit(int x){
return x & (-x);
}
int sum(int x){
int s = 0;
while(x > 0){
s += c[x];
x -= lowbit(x);
}
return s;
}
void add(int i,int x){
while(i <= N){
c[i] += x;
i += lowbit(i);
}
}
int main(){
while(~scanf("%d",&n)){
for(int i = 0;i<n;i++) scanf("%d%d",&a[i].s,&a[i].f);
sort(a,a+n);
memset(c,0,sizeof(c));
memset(cnt,0,sizeof(cnt));
for(int i = 0;i<n;i++){
cnt[sum(++a[i].s)]++;
add(a[i].s,1);
}
for(int i = 0;i<n;i++) printf("%d\n",cnt[i]);
}
return 0;
}