AlgoMooc
← 返回题库

P2855. 叠积木

中等通过率 46% · 提交 200 · 通过 92
哈希表枚举数学模拟

小慕有一堆长方体积木,所有积木的宽度和高度都相同,但长度各不相同。 小慕想用这些积木搭建一面墙。墙的每一层可以放置一个积木,也可以将两个积木拼接在一起使用,但每一层的总长度必须相等。 如果必须用完所有积木,那么这面墙最多可以建多少层?

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

输入描述

输入为一行,为各个积木的长度,数字为正整数,并由空格分隔。积木的数量和长度都不超过5000。

输出描述

输出一个数字,为墙的最大层数,如果无法按要求叠成每层长度一致的墙,则输出-1。

示例

示例 1

输入

3 6 6 3

输出

3

说明:可以每层都是长度3和6的积木拼接起来,这样每层的长度为9,层数为2;也可以其中两层直接用长度6的积木,两个长度3的积木拼接为一层,这样层数为3,故输出3。

示例 2

输入

1 4 2 3 6

输出

-1

说明:无法用这些积木叠成每层长度一致的墙,故输出-1。

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

看不懂题目?点开图解(训练营专属)

登录后查看题目图解

题目图解为训练营学员专属内容,请先登录。

微信扫码登录还不是训练营学员?了解训练营 →
写完代码点「提交」,将对全部测试用例判题。