AC: 我的做法是把<=0的数存放到一个数组当中,然后按从小到大排序,这样绝对值越大就在数组的前面,就可以操作了。
#include<stdio.h>
#include<math.h>
int cmp(const void* a,const void* b)
{
return *(int*)a - *(int*)b;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n,m;
scanf("%d %d",&n,&m);
int num[n];
int numi = 0;
int number;
for(int i = 0;i < n ;i++)
{
num[i] = 0;
}
for(int i = 0; i < n; i++)
{
scanf("%d",&number);
if(number <= 0)
{
num[numi++] = number;
}
}
qsort(num,numi,sizeof(int),cmp);
int sum = 0;
for(int i = 0; i < m ;i++)
{
sum += fabs(num[i]);
}
printf("%d\n",sum);
}
return 0;
}