50pts tle,求调
查看原帖
50pts tle,求调
1316741
JCZ_William楼主2025/1/26 18:34
#include <bits/stdc++.h>
using namespace std;
int n , m , a[500005] , b[500005];
long long ans;
void merge(int l , int r)
{
	if (l == r)
		return;
	int mid = (l + r) / 2;
	merge(l , mid);
	merge(mid + 1 , r);
	int i = l , j = mid + 1;
	for (int k = l ; k <= r ; k ++ )
	{
		if (j > r or (i <= mid and a[i] <= a[j]))
			b[k] = a[i++];
		else
			b[k] = a[j++] , ans += mid - i + 1;
	}
	for (int i = 1 ; i <= r ; i ++ )
	{
		a[i] = b[i];
	}
}
int main()
{
	cin >> n;
	for (int i = 1 ; i <= n ; i ++ )
	{
		cin >> a[i];
	}
	merge(1 , n);
	cout << ans;
	return 0;
}
2025/1/26 18:34
加载中...