一半RE50分代码求调
  • 板块P1908 逆序对
  • 楼主ToLight
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/11/19 21:07
  • 上次更新2023/11/19 21:59:41
查看原帖
一半RE50分代码求调
724607
ToLight楼主2023/11/19 21:07
#include<bits/stdc++.h>
using namespace std;
int n,a[500005];
int helper[500005];
long long ans;
void merge_sort(int l,int r)
{
  if(r-l>=1)
  {
    int mid=(l+r)/2;
    merge_sort(l,mid);
    merge_sort(mid+1,r);
    int pos1=l,pos2=mid+1;
    int i=l;
    for(int o=1;o<=2*(r-l+1);o++)
    {
      if(pos1>(mid)||(pos2<=r&&a[pos2]<a[pos1]))
        {helper[i]=a[pos2];i++,pos2++;ans+=(mid-pos1+1);}
      else
        {helper[i]=a[pos1];i++,pos1++;}
      
    }
    for(i=l;i<=r;i++)
        a[i]=helper[i];
  }
}
int main()
{
  ios::sync_with_stdio(false);
  cin>>n;
  for(int i=0;i<n;i++)
    cin>>a[i];
  merge_sort(0,n-1);
  cout<<ans;
  return 0;
}
2023/11/19 21:07
加载中...