萌新求助
  • 板块P2717 寒假作业
  • 楼主_yjh
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/12/4 21:08
  • 上次更新2023/11/3 22:54:39
查看原帖
萌新求助
222104
_yjh楼主2021/12/4 21:08
#include<iostream>
using namespace std;
int cnt=1,a[500005],tmp[500005],n,m,ans;
void merge_sort(int l,int r)
{
	if(l>=r) return ;
	int mid=(l+r)/2;
	merge_sort(l,mid);
	merge_sort(mid+1,r);
	int i,j;
	cnt=l;
	for(i=l,j=mid+1;i<=mid;i++){
		for(;j<=r&&a[j]<=a[i];j++)
		    tmp[cnt++]=a[j],ans+=(mid-i+1);
		tmp[cnt++]=a[i];	
	}
	for(;j<=r;j++) tmp[cnt++]=a[j];
	for(i=1;i<=r;i++) a[i]=tmp[i];
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=1;i<=n;i++) a[i]-=m;
	for(int i=1;i<=n;i++) a[i]+=a[i-1];
	for(int i=1;i<=n;i++) a[i]=-a[i];
	//for(int i=1;i<=n;i++) cout<<a[i]<<' ';
	//cout<<'\n';
	merge_sort(0,n);
	cout<<ans<<'\n';
	return 0;
}

int总是WA几个点

long long有几个点就TLE了

求问代码哪里出错,谢谢了wq

2021/12/4 21:08
加载中...