getting WA for http://www.spoj.com/problems/AMR10G/
[bbone=c,550]
include
int mergesort(long long int arr[],int low,int high)
{
int i = 0,mid = 0,merge1 = 0,merge2 = 0;
int length = high - low + 1;
int temp[20000];
if(low==high)
return;
mid =(low+high)/2;
mergesort(arr,low,mid);
mergesort(arr,mid+1,high);
for (i = 0; i < length; ++i)
{
temp[i] = arr[low + i];
}
merge1 = 0;
merge2 = mid - low + 1;
for (i = 0; i < length; ++i)
{
if(merge2 <= high-low)
{
if(merge1 <= mid-low)
{
if(temp[merge1] > temp[merge2])
arr[i+low] = temp[merge2++];
else
arr[i+low] = temp[merge1++];
}
else
arr[i+low] = temp[merge2++];
}
else
arr[low + i] = temp[merge1++];
}
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n, i, k;
long long int arr[20000];
scanf("%d %d", &n,&k);
for(i = 0; i < n; i++)
scanf("%lld", &arr[i]);
mergesort(arr, 0, n-1);
if(k==1)
printf("0\n");
else if(k==n)
printf("%lld\n",arr[n-1]-arr[0]);
else
{
if(arr[n-1]-arr[n-k] < arr[k-1]-arr[0])
printf("%lld\n",arr[n-1]-arr[n-k] );
else
printf("%lld\n",arr[k-1]-arr[0]);
}
}
return 0;
}
[/bbone]