前一半AC后一半RE是怎么回事

P1908 逆序对

AC ```c #include <iostream> #include <cstdio> #include <cmath> using namespace std; typedef long long LL; const int MAX = 500005 ; int n ; LL a[MAX] ; LL b[MAX] ; LL ans = 0 ; void merge_sort(int l ,int r ){ if(l ==r )return ; LL mid = (l+r)/2 ; merge_sort(l,mid) ; merge_sort(mid+1,r) ; int i = l , k = l , j =mid +1 ; while(i<=mid && j<=r){ if(a[i]<=a[j]) b[k++] =a[i++]; else{ b[k++] =a[j++] ; ans+=mid-i+1 ; } } while(i<=mid){ b[k++] =a[i++] ; } while(j<=r){ b[k++] =a[j++]; } for(int i = l; i<=r ; i++){ a[i] = b[i] ; } } int main(){ scanf("%d",&n); for(int i = 1 ; i<=n ; i++ ){ scanf("%lld",&a[i]); } merge_sort(1,n) ; cout<<ans; return 0 ; } ```
by timmyliao @ 2024-01-26 08:29:09


@[timmyliao](/user/1095093) 感谢大佬,可能是我归并排序那部分写的有点问题
by Yatsuha @ 2024-01-26 09:21:37


|