Its working fine for test cases but when trying to submit it, showing wrong answer. I am not getting any logical error in this code.
Please review it
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll merge(ll arr[],ll low,ll mid,ll high)
{
ll i,j,k,count=0;
ll n1=mid-low+1;
ll n2=high-mid;
ll left[n1];
ll right[n2];
for(i=0;i<n1;i++)
left[i]=arr[low+i];
for(j=0;j<n2;j++)
right[j]=arr[mid+1+j];
i=0,j=0,k=low;
while(i<n1 and j<n2)
{
if(left[i]<=right[j])
{
arr[k++]=left[i++];
}else
{
arr[k++]=right[j++];
count+=mid-i;
}
}
while(i<n1)
arr[k++]=left[i++];
while(j<n2)
arr[k++]=right[j++];
}
ll mergeSort(ll arr[],ll low,ll high)
{
ll count=0;
if(low<high)
{
ll mid=(low+high)/2;
count+=mergeSort(arr,low,mid);
count+=mergeSort(arr,mid+1,high);
count+=merge(arr,low,mid,high);
}
return count;
}
int main()
{
ios::sync_with_stdio(false);
ll t;
cin>>t;
while(t–)
{
ll n;
cin>>n;
ll arr[n];
for(auto i=0;i<n;i++)
cin>>arr[i];
ll count=mergeSort(arr,0,n-1);
cout<<count<<endl;
}
}