归并排序TLE(QWQ)
  • 板块P1908 逆序对
  • 楼主iamsh
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/1/14 11:06
  • 上次更新2024/1/14 13:40:36
查看原帖
归并排序TLE(QWQ)
656427
iamsh楼主2024/1/14 11:06

全部TLE了,样例能过

#include<bits/stdc++.h>
using namespace std;
const int N = 5e5 + 5; 
int  n,a[N],f[N];
long long ans;
void merge_sort(int l,int r) {
	if(l == r) {
		return ; 
	}
	int mid = (l + r) >> 1;
	merge_sort(1,mid);
	merge_sort(mid + 1,r);
	int i = l,j = mid + 1,cnt = l;
	while(i <= mid && j <= r) {
		if(a[i] <= a[j]) {
			f[cnt ++] = a[i ++];
		}
		else {
			f[cnt ++] = a[j ++];
			ans += mid + 1 - i;
		}
	}
	while(i <= mid) {
		f[cnt ++] = a[i ++];
	}
	while(j <= r) {
		f[cnt ++] = a[j ++];
	}	
	for(int i = l;i <= r;i ++)
	{
		a[i] = f[i];
	}
}
int main()
{
	scanf("%d",&n);
	for(int i = 1;i <= n;i ++)
	{
		scanf("%d",&a[i]);
	}
	merge_sort(1,n);
	printf("%d",ans);
	return 0;
}

2024/1/14 11:06
加载中...