Input
Output
Sample Input
5 1 1 5 1 7 1 3 3 5 5
Sample Output
1 2 1 1 0
Hint
#include<iostream> #include<algorithm> #include<cstdio> #include<vector> #include<string> #include<cstring> using namespace std; typedef long long LL; const int MAXN = 32003; /* 前面的必定比当前的低 只需要考虑在当前的左边的 */ int a[MAXN]; int lowbit(int x) { return x&(-x); } void update(int x, int val) { while (x < MAXN) { a[x] += val; x += lowbit(x); } } int query(int x) { int sum = 0; while (x > 0) { sum += a[x]; x -= lowbit(x); } return sum; } int n; int level[MAXN]; int main() { scanf("%d", &n); memset(a, 0, sizeof(a)); memset(level, 0, sizeof(level)); int x, y; for (int i = 1; i <= n; i++) { scanf("%d%d", &x, &y); x++; level[query(x)]++; update(x, 1); } for (int i = 0; i < n; i++) printf("%d\n", level[i]); }
原文:http://www.cnblogs.com/joeylee97/p/7426825.html