买玩具(教训)

问题 E: 买玩具

题目描述

玩具店有个活动,买2个送1个:3个玩具只要付较贵的2个玩具的钱就可以了。举个例子:

10 3 2 4 6 4 9,如果这样组合(10, 3, 2), (4, 6, 4), (9),就在第一个括号中省下2元,第二个括号中省下4元,但第三个括号不能省了,因为只有一个玩具。

小星星是个懂事的孩子,他想尽可能的为家里省钱,他能成功吗?

(注意:玩具组合的数量可以是1或者2或者3 )

输入

输入的第一行一个整数N(1 ≤N ≤ 100000),表示玩具的数量。
50%的数据中N≤ 2000
接下来的N行,每行包含一个整数Ci(1 ≤Ci≤ 100000), 表示每个玩具的价格。

输出


一个数,表示最终要为这些玩具付出的最小价格。
 

样例输入 

4 
3 
2 
3 
2 

样例输出 

8

提示


【样例 1 解释】
分组(3,2,2)(3)
 

一定要养成好的习惯,关注好数据类型能不能存下。

100000*100000会超过int的范围导致答案错误。警醒,兄弟!!!!!!

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int a[100010];
vector<int>v;
int main()
{
	int n;long long sum=0;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		sum+=a[i];
	}
	sort(a+1,a+n+1,greater<int>());
	long long cut=0;
	for(int i=1;i<=n;i++)
	{
		if(i%3==0)cut+=a[i];
	}
	cout<<sum-cut;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值