i wrote the code of count inversion using merge sort in C++ but i am getting wrong answer
#include <bits/stdc++.h>
using namespace std;
long long merge(long long *arr,long long s, long long mid,long long e){
long long count =0;
long long temp[e-s+1];
long long i = s;
long long j = mid+1;
long long k =0;
while(i<=mid && j<=e){
if(arr[i]<arr[j]){
temp[k++] = arr[i++];
}else{
temp[k++] = arr[j++];
count = count + (mid+1)-i;
}
}
while(i<=mid){
temp[k++] = arr[i++];
}
while(j<=e){
temp[k++] = arr[j++];
}
k=0;
for(i=s;i<=e;i++){
arr[i] = temp[k++];
}
return count;
}
long long mergeSort(long long *arr,long long s,long long e){
long long count =0;
if(s<e){
long long mid = (s+e)/2;
count += mergeSort(arr,s,mid);
count += mergeSort(arr,mid+1,e);
count += merge(arr,s,mid,e);
}
return count;
}
int main(){
long long x;
cin >> x;
long long arr[x];
for(long long i=0;i<x;i++){
cin >> arr[i];
}
long long N =x;
cout << mergeSort(arr,0,N-1);
}
it fails this test case
Array size : 42
elements : 468 335 1 170 225 479 359 463 465 206 146 282 328 462 492 496 443 328 437 392 105 403 154 293 383 422 217 219 396 448 227 272 39 370 413 168 300 36 395 204 312 323
Correct Output
494
output of my code
495