- gf24118 的博客
bcoi・不可名状之物
- 2025-8-17 17:05:57 @
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;
}