大意:
给你N个数,求逆序对个数(树状数组)
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define LL long long
using namespace std;
LL n,x,tree[100010];
void add(LL k,LL num)
{
while(k<=100000){
tree[k]+=num;
k+=k&(-k);
}
}
LL query(LL k)
{
LL Sum=0;
while(k){
Sum+=tree[k];
k-=k&-k;
}
return Sum;
}
int main()
{
LL i,j;
cin>>n;
memset(tree,0,sizeof(tree));
long long sum=0;
for(i=1;i<=n;i++)
{
cin>>x;
add(x,1);
sum+=(i-query(x));
}
cout<<sum;
return 0;
}