逆序对40pts求助
查看原帖
逆序对40pts求助
1074157
SANJIAOJIE楼主2025/1/21 21:38
#include<bits/stdc++.h>
using namespace std;
const int N=5e5+10;
int n,c[N],d[N];
struct Num{int No,num;}a[N];
bool cmp(Num a,Num b){return a.num<b.num;}
long long lowbit(int x){return x&-x;}
void add(int x,int k){for(int i=x;i<=n;i+=lowbit(i))c[i]+=k;}
long long sum(int x){int res=0;for(int i=x;i>0;i-=lowbit(i))res+=c[i];return res;}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){a[i].No=i;cin>>a[i].num;}
	sort(a+1,a+n+1,cmp);
	long long ans=0;
	for(int i=1;i<=n;i++){d[a[i].No]=i;}
	for(int i=1;i<=n;i++){add(d[i],1);ans+=i-sum(d[i]);}
	cout<<ans<<endl;
	return 0;
}
2025/1/21 21:38
加载中...