My issue
what i did is similar to the solution, but I have been getting a runtime error, can anyone help spot the source of error?
My code
#include<stdio.h>
#include<stdlib.h>
int compare(const void *a, const void *b) {
int int_a = *((int *)a);
int int_b = *((int *)b);
if (int_a == int_b) return 0;
else if (int_a < int_b) return -1;
else return 1;
}
void main(){
long int t;
scanf("%ld", &t);
while(t--){
long int n;
scanf("%ld", &n);
long int arrA[n];
long int arrB[2];
long int arrx[n - 2];
long int p,q;
scanf("%ld %ld", &p, &q);
long int o = p+q;
for (int i = 0; i < n; i++)
{
scanf("%ld", &arrA[i]);
}
qsort(arrA, n, sizeof(long int), compare);
arrB[0] = arrA[0];
arrB[1] = arrA[n - 1];
for (int i = 0; i < n - 2; i++)
{
arrx[i] = abs(arrA[i + 1]);
}
long int a = n - 2;
qsort(arrx, a, sizeof(long int), compare);
while (o > 0 && a > 0)
{
arrB[1] = arrB[1] + arrx[a - 1];
o--;
a--;
}
long int difference = arrB[1] - arrB[0];
printf("%ld\n", difference);
}
}
Problem Link: MAJIK Problem - CodeChef