bcoi系列目录直达

答疑!!!

data

当前有0个答疑问题

已解决1个答疑问题

累计有1个答疑问题


已解决答疑

这是照着dxd打的归并序列求逆序对的代码,每次运行输出总是0,望大佬看到后发站内消息帮忙解答。

#include <bits/stdc++.h>
#define ll long long
const int MAXN=100005;
ll a[MAXN],b[MAXN],cnt;
void NN(ll l,ll mid,ll r){
	ll i=l,j=mid+1,t=0;
	while(i<=mid && j<=r){
		if(a[i]>a[j]){
		b[t++]=a[j++];
		cnt+=mid-i+1;
		}else b[t++]=a[i++];
	}
	while(i<=mid) b[t++]=a[i++];
	while(j<=r) b[t++]=a[j++];
	for(i=0;i<t;i++) a[l+i]=b[i];
}
void MM(ll l,ll r){
	if(l<r){
		ll mid=(l+r)/2;
		MM(l,mid);
		MM(mid+1,r);
		NN(l,mid,r);
	}
}
using namespace std;
int main(){
	ll n,k;
	scanf("%lld%lld",&n,&k);
	cnt=0;
	for(ll i=0;i<n;i++) scanf("lld",&a[i]);
	MM(0,n-1);
	if(cnt<=k) printf("0\n");
	else printf("%I64d\n",cnt-k);
	return 0;
}

未解决答疑