AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

P4000. 分苹果

中等通过率 79% · 提交 388 · 通过 306
位运算数学贪心

小慕正在处理一个项目,需要将一堆苹果分成两堆。 A组希望按照自己的规则来平分苹果:它们的计算方式是二进制加法,但不计算进位。 例如,12 + 5 按照A的规则计算:12的二进制是1100,5的二进制是0101,按位相加不进位得到1001,即9。 B组则使用普通的十进制加法,包含进位。B组希望在满足A组规则的前提下,分到的苹果总重量尽可能多。 现在给定苹果的数量以及每个苹果的重量,请计算在满足A组规则的情况下,B组能获得的最大苹果总重量;如果无法满足A组的要求,则输出-1。

提示:带虚线的词点一下有通俗解释。

输入描述

苹果的数目跟每个苹果分量

输出描述

B在满意A的情形下获取的苹果总分量,假如B无法满意A的请求,输出-1。

示例

示例 1

输入

3
3 5 6

输出

11

示例 2

输入

2
12 5

输出

-1

示例 3

输入

2
12 12

输出

12

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
分苹果问题图解(示例:3 5 6) 3 5 6 总重量 = 3+5+6 = 14 分成两堆 堆A 重量 = 3 堆B 重量 = 11 A规则:3 ⊕ 11 = ? 3=0011, 11=1011 ⊕ = 1000 = 8 ≠ 14 实际需要:3 ⊕ ? = 14 ? = 3 ⊕ 14 = 13 但13不在苹果中,故无解 此例输出:-1(无法满足A)
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「分苹果」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。