Автор: | Г. Гренкин | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt |
У Марфы Геннадьевны имеется кусок очень красивой атласной ткани с выбитыми цветами. Длина куска составляет L см. Марфа Геннадьевна — большая рукодельница и любит делать всякие поделки. Она надумала сделать из ткани несколько салфеточек и подарить их на праздник своим подружкам.
Марфа Геннадьевна хочет разрезать этот кусок ткани ровно на N частей. При этом длина каждой части l должна быть целым числом и должно выполняться неравенство a ≤ l ≤ b (чтобы салфетки были не слишком маленькими и не слишком большими).
Напишите программу, позволяющую определить, можно ли разрезать кусок ткани ровно на N таких частей.
Входной файл содержит целые числа N L a b.
Выходной файл должен содержать N целых чисел li, если задача имеет решение, и единственное число 0, если задача не имеет решения.
1 ≤ N ≤ 100
1 ≤ L ≤ 1000
1 ≤ a ≤ b ≤ 1000
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Если решение задачи существует, то выполняются неравенства a ≤ li ≤ b, i = 1, 2, ..., N. При этом l1 + l2 + ... + lN = L. Складывая эти неравенства, получим следующее неравенство: Na ≤ L ≤ Nb. Таким образом, для того чтобы решение существовало, необходимо, чтобы выполнялось данное неравенство. Если данное неравенство не выполняется, то решения нет.
Предположим, что данное неравенство выполняется. Покажем, что в этом случае решение всегда есть.
Пусть длины всех N частей изначально равны a. Если L = Na, то решение найдено. Если L > Na, то заменим длину одной части на b. Если L = b + (N − 1)a, то решение найдено. Если L < b + (N − 1)a, то можно заменить длину одной части c b на x, где x = L − (N − 1)a. При этом гарантированно a ≤ x ≤ b. Если L > b + (N − 1)a, то заменим длину ещё одной части на b. И так далее.
Алгоритм выглядит следующим образом. Найдём минимальное i, для которого ib + (N − i)a ≥ L. Тогда длины (i − 1) частей возьмём равными b, длины (N − i) частей возьмём равными a, а длину оставшейся одной части возьмём равной x = L − (N − i)a − (i − 1)b. При этом гарантированно a ≤ x ≤ b.