洛谷1908
#include <iostream>
using namespace std;
typedef long long ll;
int a[500005];
int b[500005];
ll ans = 0;
void find(int l,int r)
{
if( l == r ) return;
int mid = l + ( r - l ) / 2;
find(l,mid);
find(mid+1,r);
int i = l,j = mid+1,k = l;
while( i <= mid && j <= r )
{
if( a[i] > a[j] )
{
ans += mid - i + 1;
b[k++] = a[j];
j++;
}else
{
b[k++] = a[i];
i++;
}
}
while( i <= mid )
{
b[k++] = a[i];
i++;
}
while( j <= r )
{
b[k++] = a[j];
j++;
}
for( int i = l ; i < k ; i++ ) a[i] = b[i];
}
int main()
{
int n;
cin >> n;
for( int i = 0 ; i < n ; i++ )
{
cin >> a[i];
}
find(0,n-1);
cout << ans << endl;
return 0;
}