poj 2352 Stars (树状数组 + 1)

来源:互联网 发布:mac用户名怎么改 编辑:程序博客网 时间:2024/06/09 23:24
/*    Subject: 树状数组     Author : a_clay    Created Date : 2012-02-02     Sample : poj 2352 Stars*/#include <iostream>#include <cstring>#include <vector>#include <cstdlib>#include <queue>#include <algorithm>#define Bug cout << "here\n";using namespace std;const int N = 15005;const int M = 32005;int B[M];int cnt[N];int n, T, k;int lowbit(int x) {    return x & (-x);}void add(int i, int x) {    while(i <= M) { // 注意, 不是 n, 是 M         B[i] += x;        i = i + lowbit(i);    }} //得到 Bnlong long getsum(int i) {    long long sum = 0;    while(i > 0) {        sum += B[i];        i = i - lowbit(i);    }    return sum;}int main() {    int x, y, i;    memset(cnt, 0, sizeof(cnt));    memset(B, 0, sizeof(B));    scanf("%d", &n);    for(i = 0; i < n; i++) {scanf("%d%d", &x, &y);cnt[getsum(++x)]++;add(x, 1);}for(i = 0; i < n; i++) {cout << cnt[i] << endl;}system("pause");    return 0;}