CF1129B Wrong Answer
题目描述
考虑如下问题:给定一个包含 $n$ 个整数的数组 $a$(下标从 $0$ 到 $n-1$),求
$$
\max\limits_{0 \leq l \leq r \leq n-1} \sum\limits_{l \leq i \leq r} (r-l+1) \cdot a_i
$$
在本题中,$1 \leq n \leq 2000$,且 $|a_i| \leq 10^6$。
为了解决上述问题,Alice 很快想出了一个极快的贪心算法并进行了编码。她的伪代码实现如下:
```
function find_answer(n, a)
# 假设 n 是 1 到 2000 之间的整数
# 假设 a 是一个包含 n 个整数的列表:a[0], a[1], ..., a[n-1]
res = 0
cur = 0
k = -1
for i = 0 to i = n-1
cur = cur + a[i]
if cur < 0
cur = 0
k = i
res = max(res, (i-k)*cur)
return res
```
然而,正如你所见,Alice 的想法并不完全正确。例如,假设 $n = 4$ 且 $a = [6, -8, 7, -42]$,则 find\_answer(n, a) 会返回 $7$,但正确答案是 $3 \cdot (6-8+7) = 15$。
你告诉 Alice 她的解法是错误的,但她并不相信。
给定一个整数 $k$,你需要构造一个长度为 $n$ 的整数序列 $a$,使得正确答案与 Alice 算法的输出恰好相差 $k$。注意,$n$ 和序列内容由你选择,但必须满足上述约束:$1 \leq n \leq 2000$,且每个元素的绝对值不超过 $10^6$。如果不存在这样的序列,请输出相应信息。
输入格式
第一行包含一个整数 $k$($1 \leq k \leq 10^9$)。
输出格式
如果不存在满足条件的序列,输出 “-1”。
否则,第一行输出一个整数 $n$($1 \leq n \leq 2000$),表示序列的长度。
第二行输出 $n$ 个用空格分隔的整数 $a_0, a_1, \ldots, a_{n-1}$($|a_i| \leq 10^6$)。
说明/提示
第一个样例对应题目描述中的例子。
第二个样例中,一种可行解为 $n = 7$,$a = [30, -12, -99, 123, -2, 245, -300]$,此时 find\_answer(n, a) 返回 $1098$,而正确答案为 $1710$。
由 ChatGPT 4.1 翻译