蒟蒻又来求助了

P1908 逆序对

Xhesika_Frost @ 2020-01-18 18:46:02

33分qwq

#include<bits/stdc++.h>
#include<algorithm>
using namespace std;
int t[500001];
int a[500000];
int b[500000];
 int maxn;
int x,k,y,f;
int lowbit(int x){
    return x&-x;
}
int n,m;
int add(int x,int k){
    while(x<=n){
        t[x]+=k;
        x+=lowbit(x);
    }
}
int sum(int x){
    int ans=0;
    while(x){
        ans+=t[x];
        x-=lowbit(x);
    }
    return ans;
}
int anss;
bool cmp(const int &x,const int &y){
    return b[x]>b[y];
}
int main(){
    cin>>n;;
    for(int i=1;i<=n;++i){
        cin>>b[i];
        a[i]=i;
    }
    sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n;++i){
        add(a[i],1);
        anss+=sum(a[i]-1);
    }
    cout<<anss;
    return 0;
}

|