题目描述
题目译自 BalticOI 2023 Day2「Sequence」
一列整数 (x1,…,xm) 是好的,如果 x1=1 并且对于每个 1<j≤m,要么有 xj=xj−1+1,要么对于某个 k 和 l 满足 0<k≤l<j 有 xj=xk⋅xl。例如,序列 (1,1) 和 (1,2) 都是好的,但是序列 (1,3) 不是好的。对于给定的 n 个整数 w1,…,wn,定义一个对于 1≤j≤m 都满足 1≤xj≤n 的整数序列 (x1,…,xm) 的权重为
wx1+…+wxm
例如,给定的权重 w1=10,w2=42,w3=1,序列 (1,1) 的权重为 20,序列 (1,3) 的权重为 11。对于 1≤v≤n,定义 sv 为包含 v 的好序列可能的最小权重。
你的任务是确定 s1,…,sn。
输入格式
第一行一个整数 n,表示权重序列的长度。
接下来 n 行,每行一个整数 wi,表示权重序列。
输出格式
输出 n 行,第 i 行输出 si。
3
10
42
1
10
52
53
数据范围与提示
对于全部数据,满足:
- 1≤n≤3⋅104
- 1≤wi≤106(对于 1≤i≤n)
详细子任务附加限制及分值如下表。
子任务编号 |
附加限制 |
分值 |
1 |
n≤10 |
11 |
2 |
n≤300,w1=…=wn=1 |
10 |
3 |
n≤300,w1=…=wn |
4 |
n≤1400,w1=…=wn=1 |
9 |
5 |
n≤5000 |
45 |
6 |
无附加限制 |
15 |