记录编号 575293 评测结果 AAAAAAAAAA
题目名称 孙伯符降临 最终得分 100
用户昵称 Gravatarムラサメ 是否通过 通过
代码语言 C++ 运行时间 0.672 s
提交时间 2022-09-08 20:09:55 内存使用 27.33 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,rec;
int ans[100010],tree[10000010];
struct node{
	int a,b,num;
}f[100010];
bool cmp(node x,node y){
	if(x.a!=y.a){
		return x.a<y.a;
	}
	if(x.b!=y.b){
		return x.b<y.b;
	}
	return x.num>y.num;
}
int lowbit(int x){
	return x&(-x);
}
void prework(int a,int b){
	for(int i=a;i<=rec;i+=lowbit(i)){
		tree[i]+=b;
	}
}
int worksum(int a){
	int cnt=0;
	for(int i=a;i>0;i-=lowbit(i)){
		cnt+=tree[i];
	}
	return cnt;
}
int main(){
	freopen("sunbofu.in","r",stdin);
	freopen("sunbofu.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
    cin>>n;
    for(int i=1;i<=n;i++){
    	cin>>f[i].a>>f[i].b;
    	f[i].b++;
    	f[i].num=i;
    	rec=max(rec,f[i].b);
    }
    sort(f+1,f+n+1,cmp);
    for(int i=1;i<=n;i++){
    	ans[f[i].num]=worksum(f[i].b);
    	prework(f[i].b,1);
    }
    for(int i=1;i<=n;i++){
    	cout<<ans[i]<<endl;
    }
    return 0;
}