CF1248B.Grow The Tree

传统题 时间 2000 ms 内存 256 MiB 4 尝试 1 已通过 1 标签

Grow The Tree

题目描述

园丁 Alexey 教授高中生竞赛编程。为了庆祝教师节,学生们送给了 Alexey 一组木棍,每根木棍的长度都是整数。现在 Alexey 想用这些木棍“种”一棵树。

这棵树在平面上表现为一条折线,由所有木棍组成。折线从点 (0,0)(0,0) 开始。在构造折线的过程中,Alexey 可以以任意顺序依次将木棍连接到折线上。每根木棍必须是竖直或水平的(即平行于 OXOXOYOY 轴)。不允许连续两根木棍同时水平或同时竖直。具体可参考下方图片。

Alexey 想要使折线的终点距离 (0,0)(0,0) 尽可能远。请帮他实现这个目标。

注意,定义树形状的折线可以自交或自触,但可以证明最优解不会包含自交或自触。

输入格式

第一行包含一个整数 nn1n1000001 \le n \le 100\,000),表示 Alexey 收到的木棍数量。

第二行包含 nn 个整数 a1,,ana_1, \ldots, a_n1ai100001 \le a_i \le 10\,000),表示每根木棍的长度。

输出格式

输出一个整数,表示从 (0,0)(0,0) 到树终点的最大可能距离的平方。

说明/提示

下图展示了样例测试的最优树形。第一个样例的距离平方为 55+11=265 \cdot 5 + 1 \cdot 1 = 26,第二个样例的距离平方为 44+22=204 \cdot 4 + 2 \cdot 2 = 20

由 ChatGPT 4.1 翻译

样例

3
1 2 3
26
4
1 1 2 2
20

在线编程 IDE

建议全屏模式获得最佳体验