Stars (星星)

poj 2352

题目大意:

解决:树状数组,关键是要将x轴的下标从一开始可以将x都加1

#include <iostream>

#include <cstdio>

using namespace std;

const int N=32005;

int n;

int c[N];

int lev[N];

int lowbit(int x)

{

    return x&(-x);

}



void updata(int pos,int inc)

{

    for(int i=pos;i<N;i+=lowbit(i))

     c[i]+=inc;

}



int getsum(int pos)

{

    int sum=0;

    for(int i=pos;i;i-=lowbit(i))

      sum+=c[i];

    return sum;

}

int main()

{

 

    int i, a,b;

    scanf("%d",&n);

    for(i=0;i<n;i++)

    {

        scanf("%d%d",&a,&b);

        lev[getsum(a+1)]++;

        updata(a+1,1);

    }

    for(i=0;i<n;i++)

     printf("%d\n",lev[i]);

    system("pause");

    return 0;

}

你可能感兴趣的:(tar)