…话说这不应该是学语言的时候学的嘛…
#include <cstdio>
#include <algorithm>
#define Rep( i , _begin , _end ) for(int i=(_begin);i<=(_end);i++)
#define For( i , _begin , _end ) for(int i=(_begin);i!=(_end);i++)
#define Lop( i , _begin , _end ) for(int i=(_begin);i>=(_end);i--)
#define Dnt( i , _begin , _end ) for(int i=(_begin);i!=(_end);i--)
using std :: max;
using std :: min;
using std :: sort;
using std :: pair;
using std :: lower_bound;
const int maxx = 500000 + 25;
typedef pair<int,int> iii;
int num[maxx<<1];
int T[maxx<<1];
iii a[maxx];
int n,m,x,y,z,cnt,tot,ans;
namespace BIT{
int lowbit(int x){
return x & (-x);
}
void Add(int x){
for(int i=x;i<=n;i+=lowbit(i))
T[i] += 1;
}
int Query(int x){
int ans = 0;
for(int i=x;i;i-=lowbit(i))
ans += T[i];
return ans;
}
}
using namespace BIT;
int main(){
scanf("%d",&n);
Rep( i , 1 , n ) scanf("%d",&a[i].first),a[i].second = i;
sort(a+1,a+n+1);
Rep( i , 1 , n ) num[a[i].second] = i;
Rep( i , 1 , n ) ans += Query(n-num[i]+1),Add(n-num[i]+1);
printf("%d",ans);
return 0;
}