分苹果

标题:分苹果 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限
A、B两个人把苹果分为两堆,A希望按照他的计算规则等分苹果,他的计算规则是按照二进制加法计算,并且不计算进位 12+5=9(1100 + 0101=9),B的计算规则是十进制加法,包括正常进位,B希望在满足A的情况下获取苹果重量最多。输入苹果的数量和每个苹果重量,输出满足A的情况下B获取的苹果总重量。如果无法满足A的要求,输出-1。
数据范围
1<= 总苹果数量 <= 20000
1 <= 每个苹果重量 <= 10000


#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;

int main()
{
	int input;
	while (cin >> input)
	{
		vector<int>weight;
		for (int i = 0; i < input; i++)
		{
			int value;
			cin >> value;
			weight.push_back(value);
		}
		sort(weight.begin(), weight.end());

		int result = 0;
		int sum = 0;
		for (int i = 0; i < weight.size(); i++)
		{
			result ^= weight[i];
			sum += weight[i];
		}
		if (result)
		{
			cout << -1 << endl;
		}
		else
		{
			cout << sum - weight[0] << endl;
		}
	}
	return 0;
}


全部评论
没看懂
点赞 回复 分享
发布于 2023-06-15 00:34 广西

相关推荐

评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务