#CSPJ2025D. 多边形(polygon)
多边形(polygon)
题目描述
小R喜欢玩小木棍。小R有 n 根小木棍,第 i (1 ≤ i ≤ n) 根小木棍的长度为 a_i。 小X希望小R从这 n 根小木棍中选出若干根小木棍,将它们按任意顺序首尾相连拼成一个多边形。小R并不知道小木棍能拼成多边形的条件,于是小X直接将条件告诉了他:对于长度分别为 l1, l2, ..., lm 的 m 根小木棍,这 m 根小木棍能拼成一个多边形当且仅当 m ≥ 3 且所有小木棍的长度之和大于所有小木棍的长度最大值的两倍,即 ∑{i=1}^{m} l_i > 2 × max{i=1}^{m} l_i。 由于小R知道了小木棍能拼成多边形的条件,小X提出了一个更难的问题:有多少种选择小木棍的方案,使得选出的小木棍能够拼成一个多边形?你需要帮助小R求出选出的小木棍能够拼成一个多边形的方案数。两种方案不同当且仅当选择的小木棍的下标集合不同,即存在 1 ≤ i ≤ n,使得其中一种方案选择了第 i 根小木棍,但另一种方案未选择。由于答案可能较大,你只需要求出答案对 998,244,353 取模后的结果。
输入格式
从文件 polygon.in 中读入数据。 输入的第一行包含一个正整数 n,表示小R的小木棍的数量。 输入的第二行包含 n 个正整数 a1, a2, ..., an,表示小R的小木棍的长度。
输出格式
输出到文件 polygon.out 中。 输出一行一个非负整数,表示小R选出的小木棍能够拼成一个多边形的方案数对 998,244,353 取模后的结果。
5
1 2 3 4 5
9
5
2 2 3 8 10
6
数据规模与约定

对于所有测试数据,保证:
- 3 ≤ n ≤ 5,000;
- 对于所有 1 ≤ i ≤ n,均有 1 ≤ a_i ≤ 5,000。
