atcoder abc 190 F

atcoder abc 190 F


```c++
#include 
#define lowbit(x) (x&(-x))
using namespace std;

void be(int a,int *g,int n)
{
    while(lowbit(a)+a<=n)
    {
        a+=lowbit(a);
        ++g[a];
    }
}
int fd(int a,int *g)
{
    int tt=0;
    tt+=g[a];
    while(a-lowbit(a)>0)
    {
        a-=lowbit(a);
        tt+=g[a];
    }
    return tt;
}
int main()
{
    int n;
    cin>>n;
    int a[n+1],g[n+1]={};
    int *p=g;
    int ans=0;
    for(int i=1;i<=n;++i)
    {
        cin>>a[i];
        ++a[i];
        ++g[a[i]];
        be(a[i],p,n);
        ans+=i-fd(a[i],p);
    }
    for(int i=1;i<=n;++i)
    {
        cout<-1;
        ans+=n-a[i];
    }
    return 0;
}


  • 关于该问题,我找了一篇非常好的博客,你可以看看是否有帮助,链接:AtCoder ABC 243题解