15880小埋的解密游戏 50分,哪里出问题了?

代码如下:

在此处键入或粘贴代码
```#include<bits/stdc++.h>
using namespace std;
#define int long long
int a,b,n[200010],s;
void f(int l,int r){
  if(l==r){
    return;
  }
  int mid=(l+r)/2;
  f(l,mid);
  f(mid+1,r);
  int a[mid-l+5]={},b[r-mid+4]={},x=0,y=0;
  for(int i=l;i<=mid;i++){
    a[i-l]=n[i];
  }
  for(int i=mid+1;i<=r;i++){
    b[i-mid-1]=n[i];
  }
  int i=l;
  for(;i<=r;i++){
    if(x==mid-l+1 or y==r-mid){
      break;
    }
    if(a[x]<b[y]){
      n[i]=a[x];
      x++;
    }
    else{
      n[i]=b[y];
      y++;
      s+=x;
    }
  }
  while(x!=mid-l+1){
    n[i]=a[x];
    i++;
    x++;
  }
  while(y!=r-mid){
    n[i]=b[y];
    i++;
    y++;
    s+=x;
  }
}
signed main(){
  cin>>a>>b;
  for(int i=1;i<=a;i++){
    cin>>n[i];
    n[i]-=b;
    n[i]+=n[i-1];
  }
  f(0,a);
  cout<<s;
  return 0;
}
2 个赞

题面?

1 个赞

@吴悦泽

发现问题了,看漏了条件

1 个赞

六!

1 个赞