sicily 1438. Shopaholic
2015-10-30 20:43
267 查看
1438. Shopaholic
Constraints
Time Limit: 1 secs, Memory Limit: 32 MBDescription
Lindsay is a shopaholic. Whenever there is a discount of the kind where you can buy three items and only pay for two, she goes completely mad and feels a need to buy all items in the store. You have given up on curing her for this disease, but try to limitits effect on her wallet. You have realized that the stores coming with these offers are quite selective when it comes to which items you get for free; it is always the cheapest ones. As an example, when your friend comes to the counter with seven items, costing
400, 350, 300, 250, 200, 150, and 100 dollars, she will have to pay 1500 dollars. In this case she got a discount of 250 dollars. You realize that if she goes to the counter three times, she might get a bigger discount. E.g. if she goes with the items that
costs 400, 300 and 250, she will get a discount of 250 the first round. The next round she brings the item that costs 150 giving no extra discount, but the third round she takes the last items that costs 350, 200 and 100 giving a discount of an additional
100 dollars, adding up to a total discount of 350. Your job is to find the maximum discount Lindsay can get.
Input
The first line of input gives the number of test scenarios, 1 ≤ t ≤ 20. Each scenario consists of two lines of input. The first gives the number of items Lindsay is buying, 1 ≤ n ≤ 20000. The next line gives the prices of these items, 1 ≤ pi ≤ 20000.4000
Output
For each scenario, output one line giving the maximum discount Lindsay can get by selectively choosing which items she brings to the counter at the same time.Sample Input
1 6 400 100 200 350 300 250
Sample Output
400
题目分析
题目大意是每3件物品,最低价的物品免单
做个降序排列,然后隔3取和
#include <iostream>
#include <algorithm>
bool com(int a, int b) {
return a > b;
}
int main()
{
int test;
std::cin >> test;
while (test--) {
int num;
std::cin >> num;
int value[num];
for (int i = 0; i < num; ++i)
std::cin >> value[i];
std::sort(value, value+num, com);
int discount = 0;
for (int i = 2; i < num; i += 3)
discount += value[i];
std::cout << discount << std::endl;
}
}
相关文章推荐
- 网 上 找 了 些 练 习 题 试 试 手
- Centos6.5 搭建 SVN 服务器 及 钩子同步更新网站代码
- Tomcat的安装与第一个servlet程序的部署
- linux笔记:权限管理命令chmod,chown,chgrp,umask
- Linux的chattr与lsattr命令
- apache用户认证配置
- 网站源码 网站模板 扁平化后台管理 Bootstrap、HTML5、CSS3 Java
- Linux下常见性能分析工具
- (转)支付宝牛逼的原因:来看内部架构剖析
- (转)论架构师的自我修养
- 《学习opencv》笔记——矩阵和图像操作——cvSetIdentity,cvSolve,cvSplit,cvSub,cvSubS and cvSubRS
- opencv solvePnP
- VS2008 中OpenGL的安装 (我的安装)
- linux目录扫描
- How To Build CyanogenMod Android (oneplus/bacon) On Linux
- apache配置解析php
- nginx和keepalive共存亡
- LVM逻辑卷扩容
- linux压缩和解压
- keepalive监控nginx