int cmp(const void* a, const void* b){ return abs(*(int*)b) - abs(*(int*)a); } int largestSumAfterKNegations(int* A, int ASize, int K){ int i,sum=0; qsort(A,ASize,sizeof(int),cmp); for (i=0; i<ASize; i++) { if (K && A[i] < 0) { A[i] *= -1; K--; } sum+=A[i]; } return (K % 2)? sum - 2*A[ASize-1] : sum; }