记录编号 571815 评测结果 AAAAAAWWWW
题目名称 孙伯符降临 最终得分 60
用户昵称 GravatarHeSn 是否通过 未通过
代码语言 C++ 运行时间 0.903 s
提交时间 2022-06-25 11:24:17 内存使用 7.10 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n, c[100010] = {0}, ans[1000010] = {0};
int a[100010], b[100010];
struct node {
	int a, b, id;
}num[100010];
bool cmp(node x, node y) {
	return !(x.a > y.a || (x.a == y.a && x.b > y.b));
}
int lowbit(int x) {
	return x & -x;
}
int add(int x, int num) {
	for(int i = x; i <= 1000010; i += lowbit(i)) {
		c[i] += num;
	}
	return 0;
}
int query(int x) {
	int sum = 0;
	for(int i = x; i; i -= lowbit(i)) {
		sum += c[i];
	}
	return sum;
}
int main() {
    freopen("sunbofu.in", "r", stdin);
    freopen("sunbofu.out", "w", stdout);
	cin >> n;
	for(int i = 1; i <= n; i ++) {
		cin >> num[i].a >> num[i].b;
		num[i].id = i;   //id为原来数组中的位置 
	}
	sort(num + 1, num + n + 1, cmp);
	for(int i = 1; i <= n; i ++) {
		ans[num[i].id] = query(num[i].b + 1); //可能有b = 0 
		add(num[i].b + 1, 1);
	}
	for(int i = 1; i <= n; i ++) {
		cout << ans[i] << endl;
	}
    return 0;
}