poj 2352 Stars

http://poj.org/problem?id=2352

題意:給你一些y遞增(y相等,x遞增)的座標,按照在一個點的左方並且在下方(包括垂直方向的)的點的個數劃分等級,求1到n-1的等級的個數。

#include <cstdio>
#include <cstring>
#define maxn 400000
using namespace std;

int c[maxn],leve[maxn],a,b,n;

int lowbit(int x)
{
    return x&(x^(x-1));
}

void add(int x,int m)
{
    while(x<=maxn)
    {
        c[x]+=m;
        x+=lowbit(x);
    }
}

int sum(int x)
{
    int sum1=0;
    while(x>0)
    {
        sum1+=c[x];
        x-=lowbit(x);
    }
    return sum1;
}
int main()
{
    scanf("%d",&n);
    memset(c,0,sizeof(c));
    for(int k=1; k<=n; k++)
    {
        scanf("%d%d",&a,&b);
        a++;
        int t=sum(a);
        leve[t]++;
        add(a,1);
    }
    for(int i=0; i<n; i++)
    {
        printf("%d\n",leve[i]);
    }
    return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章