分苹果
标题:分苹果 | 时间限制: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;
}
查看15道真题和解析