这道题排序下然后每三个中选择最后一个(最小的)加起来就好。题目表述不是很清楚,举例的350不是最大的discount.
thestoryofsnow | 3637 | Accepted | 240K | 94MS | C++ | 718B |
/*
ID: thestor1
LANG: C++
TASK: poj3637
*/
#include <iostream>
#include <fstream>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <limits>
#include <string>
#include <vector>
#include <list>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <algorithm>
#include <cassert>
using namespace std;
const int MAXN = 20000;
int main()
{
int prices[MAXN];
int T, n;
scanf("%d", &T);
for (int t = 0; t < T; ++t)
{
scanf("%d", &n);
for (int i = 0; i < n; ++i)
{
scanf("%d", &prices[i]);
}
sort(prices, prices + n, greater<int>());
int discount = 0;
for (int i = 2; i < n; i += 3)
{
discount += prices[i];
}
printf("%d\n", discount);
}
return 0;
}