AT_arc210_e [ARC210E] Subset Sum Gaps
题目描述
给定一个正整数序列 $A = (A_1, A_2, \ldots, A_N)$。
考虑 $A$ 的所有子序列,按照成员下标区分子序列,总共有 $2^N$ 个。设这些子序列的和分别为 $S_1, S_2, \ldots, S_{2^N}$,并按升序排列。
对于所有满足 $1.01 \times S_k \leq S_{k+1}$ 的整数 $k$($1 \leq k \leq 2^N - 1$),输出 $S_k, S_{k+1}, (k \bmod 998244353)$。
什么是子序列?一个序列 $A$ 的子序列是通过从 $A$ 中移除零个或多个元素,并保持剩余元素的原有顺序得到的序列。
输入格式
输入从标准输入读取,格式如下:
> $N$ $A_1$ $A_2$ $\ldots$ $A_N$
输出格式
第一行输出满足要求的整数 $k$ 的数量。
从第二行开始,每行输出一个满足条件的 $k$ 对应的 $S_k, S_{k+1}, (k \bmod 998244353)$,用空格隔开。
输出需按照 $k$ 升序排列。
说明/提示
### 样例解释 1
共有如下八个子序列:
- 空子序列。和为 $0$。
- $(5)$。和为 $5$。本子序列出现两次。
- $(3)$。和为 $3$。
- $(5,5)$。和为 $10$。
- $(5,3)$。和为 $8$。本子序列出现两次。
- $(5,5,3)$。和为 $13$。
$S_1, S_2, \ldots, S_8$ 依次为 $0,3,5,5,8,8,10,13$。
### 数据范围
- $2 \leq N \leq 5000$
- $1 \leq A_i \leq 10^{13}$
由 ChatGPT 5 翻译