HDu 1556

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40924940/article/details/84948403

热身练习的水题。。用树状数组。不说了。。。

庆祝一下 第一百个博客。。。。。。。。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int low(int x){ return x&-x; }
const int maxn = 1e5+5;
const int mod = 9901;
int num[maxn];
int ans[maxn];
void add(int x,int val)
{
    for(int i=x;i<maxn;i+=low(i))
        num[i] += val;
}
int sum(int x)
{
    int res = 0;
    for(int i=x;i>0;i-=low(i))
        res += num[i];
    return res;
}
int main()
{
    int n;
    while(~scanf("%d",&n)&&n)
    {
        int a,b;
        memset(num,0,sizeof num);
        for(int i=1;i<=n;i++)
        {
            scanf("%d%d",&a,&b);
            add(a,1);
            if(b != n)
                add(b+1,-1);
        }
        for(int i=1;i<=n;i++)
        {
            printf("%d%c",sum(i),i==n?'\n':' ');
        }
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_40924940/article/details/84948403