Фрезерные станки
Фрезерные станки
Fab лаборатория — это открытая небольшая мастерская, где можно создать или изготовить практически все, что захотите, в основном с помощью инструментов с компьютерным управлением, таких как лазерный резак или 3D-принтер. Недавно фабрика FAU получила фрезерный станок с ЧПУ. Используя фрезерный станок, Вы можете резать или удалять материал с поверхности заготовки разными инструментами. Он управляется компьютерной программой.
Иногда мне было интересно, что произойдет, если несколько заготовок разной формы будут отправлены через одну программу фрезерования. Для упрощения предположим, что у нас есть только двумерные заготовки без отверстий. Программа фрезерования состоит из нескольких шагов. Каждый шаг описывает, где фрезерный станок должен удалить материал (с помощью различных инструментов) с верхней части поверхности.
Входные данные
Первая строка состоит из двух целых чисел w и s~(1 \le w, s \le 10^4), где w количество деталей, а s количество шагов в программе фрезерования. Следующая строка состоит из двух целых чисел x и y~(1 \le x, y \le 100), где x — ширина, а y — максимально возможная высота заготовки.
Каждая из следующих w строк описывает одну деталь. Описание каждой детали состоит из x целых неотрицательных чисел, определяющих высоту поверхности в этом столбце.
Каждая из следующих s строк описывает один шаг фрезерования в программе. Описание каждого шага фрезерования состоит из x целых неотрицательных чисел s_i~(0 \le s_i \le y), определяющих количество отрезанной поверхности. каждый столбец (относительно высоты области фрезерования, т.е. y, а не относительно верха заготовки). Смотрите рисунок.
Выходные данные
Для каждой заготовки выведите одну строку, содержащую x целых чисел, определяющих оставшуюся высоту поверхности (в том же порядке, как и во входных данных).
Пример
Вторая деталь в первом примере: исходная деталь с последующим фрезерованием в каждом столбце — значение в программе фрезерования определяет вертикальное положение фрезерной головки.
2 1 3 4 4 4 4 4 2 3 2 3 0
2 1 4 2 1 3
1 3 10 100 11 22 33 44 55 66 77 88 99 100 1 100 1 100 1 100 1 100 1 100 58 58 58 58 58 58 58 58 58 58 42 42 42 42 42 42 42 42 66 42
11 0 33 0 42 0 42 0 34 0