比赛 |
SBOI2022暑假快乐赛① |
评测结果 |
AWAAAAWTTT |
题目名称 |
孙伯符降临 |
最终得分 |
50 |
用户昵称 |
cb |
运行时间 |
3.905 s |
代码语言 |
C++ |
内存使用 |
4.35 MiB |
提交时间 |
2022-06-25 11:10:29 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
int n;
int ans[100005] = {0};
struct node {
int a, b, x;
} p[100005];
//int c[100005];
bool cmp (node r1, node r2) {
if (r1.a == r2.a) {
return r1.b > r2.b;
}
else return r1.a > r2.a;
}
//void fenzhi (int l, int r) {
// if (l >= r) return;
// int mid = (l + r) << 1;
// fenzhi (l, mid);
// fenzhi (mid + 1, r);
// int i = l, j = mid + 1, k = l;
// while (i <= mid && j <= r) {
// if (p[i].b <= p[i + 1].b) {
// c[k ++] = p[i ++].b;
// }
// else {
//
// }
// }
//}
int main () {
freopen ("sunbofu.in", "r", stdin);
freopen ("sunbofu.out", "w", stdout);
scanf ("%d", &n);
for (int q = 1; q <= n; ++q) {
scanf ("%d %d", &p[q].a, &p[q].b);
p[q].x = q;
}
sort (p + 1, p + n + 1, cmp);
// for (int q = 1; q <= n; ++q) {
// printf ("%d %d\n", p[q].a, p[q].b);
//
// }
for (int q = 1; q <= n; ++q) {
for (int w = q + 1; w <= n; ++w) {
if (p[w].b == p[q].b && p[w].a == p[q].a) continue;
else if (p[w].b <= p[q].b && p[w].a <= p[q].a) ans[p[q].x] ++;
}
}
for (int q = 1; q <= n; ++q) printf ("%d\n", ans[q]);
return 0;
}