MY TLE code:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const int N=5e5+5;
int n,ans;
int a[N],r[N];
void gsort(int s,int t) {
if(s>=t) return;
int mid=(s+t)/2;
gsort(1,mid);
gsort(mid+1,t);
int i=s,j=mid+1,k=s;
while(i<=mid&&j<=t) {
if(a[i]<=a[j]) r[k++]=a[i++];
else {
r[k++]=a[j++];
ans+=mid-i+1;
}
}
while(i<=mid) r[k++]=a[i++];
while(j<=t) r[k++]=a[j++];
for(int i=s; i<=t; i++)
a[i]=r[i];
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n;
for(int i=1; i<=n; i++) cin>>a[i];
gsort(1,n);
cout<<ans<<endl;
return 0;
}