1 条题解

  • 1
    @ 2024-6-10 11:57:25
    #include<bits/stdc++.h>
    using namespace std;
    int n,t[1000010];
    struct a
    {
        int x,y;
    };
    a g[1000010];
    long long c[1000010];
    int lowbit(int x){return x&(-x);}
    bool cmp(a x,a y)
    {
        if(x.x==y.x)return x.y<y.y;
        else return x.x<y.x;
    }
    void update(int pos,int x){
        for(int i=pos;i<=32001;i+=lowbit(i))c[i]+=x;
    }
    long long sum(int a)
    {
        long long tot=0;
        for(int i=a;i>0;i-=lowbit(i))tot+=c[i];
        return tot;
    }
    long long sum1(int a,int b){
        return sum(b)-sum(a-1);
    }
    int main()
    {
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            scanf("%d%d",&g[i].x,&g[i].y);
            g[i].y++;
        }
        sort(g+1,g+n+1,cmp);
        for(int i=1;i<=n;i++)
        {
            t[sum(g[i].y)]++;
            update(g[i].y,1);
        }
        for(int i=0;i<n;i++)
            cout<<t[i]<<"\n";
        return 0;
    }
    
    • 1

    信息

    ID
    768
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    33
    已通过
    9
    上传者