题意就是每买三件免费一件最便宜,求免费掉的最大总值,显然按从大到小排个序,3个3个地取,把3个中最小的那个加起来就是结果了。。比较水
#include<stdio.h>
#include<stdlib.h>
static int cmp(const void *p1, const void *p2)
{
return *(int *) p2 - *(int *) p1;
}
int main()
{
int t, n, a[20000];
scanf("%d", &t);
while (t--)
{
scanf("%d", &n);
int i;
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
qsort(a, n, sizeof(int), cmp);
int sum = 0, j;
for (j = 2; j < n; j += 3)
sum += a[j];
printf("%d\n", sum);
}
return 0;
}