Олимпиадный тренинг

Задача . B. Неправильный ответ


Задача

Темы: Конструктив *2000

Рассмотрим следующую задачу: дан массив \(a\), содержащий \(n\) целых чисел (пронумерованных от \(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 2\,000\) и \(|a_i| \leq 10^6\).

Попытавшись решить эту задачу, Алиса сразу придумала сногсшибательно-быстрый алгоритм и запрограммировала его. Псевдокод ее реализации такой:


function find_answer(n, a)
# Assumes n is an integer between 1 and 2000, inclusive
# Assumes a is a list containing n integers: 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

Как вы можете видеть, идея Алисы не отличается правильностью. Например, положим \(n = 4\) и \(a = [6, -8, 7, -42]\). Тогда find_answer(n, a) вернет \(7\), но правильный ответ \(3 \cdot (6-8+7) = 15\).

Вы сказали Алисе, что ее решение неправильное, но она вам не поверила.

Дано целое число \(k\), ваша задача — найти любую последовательность \(a\) из \(n\) целых чисел такую, что правильный ответ для нее и ответ алгоритма Алисы отличается ровно на \(k\). Обратите внимание, что не смотря на то, что вы сами выбираете \(n\) и содержание последовательности, вы все равно должны следовать данным ограничениям: \(1 \leq n \leq 2\,000\) и абсолютная величина каждого элемента последовательности не должна превосходить \(10^6\). Если такой последовательности нет, вы должны это определить.

Входные данные

Первая и единственная строка ввода содержит одно целое число \(k\) (\(1 \leq k \leq 10^9\)).

Выходные данные

Если не существует искомой последовательности, выведите «-1».

Иначе в первой строке выведите одно целое число \(n\) (\(1 \leq n \leq 2\,000\)), обозначающее число элементов в последовательности.

Затем, во второй строке выведите \(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\).


Примеры
Входные данныеВыходные данные
1 8
4
6 -8 7 -42
2 612
7
30 -12 -99 123 -2 245 -300

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w644
Комментарий учителя