为什么re
  • 板块P1908 逆序对
  • 楼主SkokraFX
  • 当前回复6
  • 已保存回复7
  • 发布时间2024/1/13 11:26
  • 上次更新2024/1/13 14:36:36
查看原帖
为什么re
676668
SkokraFX楼主2024/1/13 11:26

代码如下:

#include<bits/stdc++.h>
using namespace std;
const int N=500005;
int n;
int a[N],b[N],c[N];
#define lowbit(x) x&(-x)
void update(int p){
    while(p>=n){
        c[p]++;
        p+=lowbit(p);
    }
}
int getsum(int x){
    int sum=0;
    while(x>=1){
        sum+=c[x];
        x-=lowbit(x);
    }
    return sum;
}
bool cmp(int x,int y){
    if(a[x]==a[y]) return x>y;
    return a[x]>a[y];
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        b[i]=i;
    }
    sort(b+1,b+n+1,cmp);
    long long ans=0;
    for(int i=1;i<=n;i++){
        update(b[i]);
        ans+=getsum(b[i]-1);
    }
    cout<<ans;
    return 0;
}
2024/1/13 11:26
加载中...