eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

План евакуації

План евакуації

У місті є муніципальні будівлі та бомобосховища, які були спеціально збудовані для евакуації службовців у випадку ядерної війни. Кожне бомбосховище має обмежену місткість по кілбкості людей, які можуть у ньому знаходитись. В ідеалі усі робітники з одного муніципального будинку повинні бул б бігти до найближчого бомбосховища. Проте, у такому випадку, деякі бомбосховща могли б переповнитись, у той час як інші залишились би наполовину порожніми. Щоб розв'язати цю проблему Міська Рада розробила спеціальний план евакуації. Замість того, щоб кожному службовцю індивідуально прописати, у яке бомбосховище він повинен бігти, для кожного муніципального будинку визначили, скільки службовців з нього у яке бомобосховище повинні бігти. Задача індивідуального розподілу була перекладена на внутрішнє управлінння муніципальних будівель. План евакуації враховує кількість службовців у кожному будинку --- кожен службовець повинен бути врахований у плані і у кожне бомбосховище може бути направлена кількість службовців, яка не перевищує місткість бомбосховища. Міська Рада заявляє, що їхній план евакуації оптимальний у тому змісті, що сумарний час евакуації усіх службовців міста мінімальний. Мер міста, яки знаходиться у постійній конфронтації з Міською Радою, не дуже то вірить цій заяві. Тому він найняв Вас у якості незалежного експерта для перевірки плану евакуації. Ваша задача полягає у тому, щоб або переконатись в оптимальності плана Міської Ради, або довестиь протилежне, подавши у якості доказу інший план евакуації з меншим сумарним часом для евакуації усіх службовців. Карта міста може бути подана у вигляді квадратної сітки. Розміщення муніципальних будівель та бомбосховищ задається парою цілих чисел, а час евакуації з муніципального будинку з координатами (\textbf{X_i}, \textbf{Y_i}) у бомбосховище з координатами (\textbf{P_j}, \textbf{Q_j} ) складає \textbf{Dij = |X_i-P_j| + |Yi-Q_j| + 1} хвилин. \InputFile Вхідний файл містить опис карти міста та плану евакуації, запропонованого Міською Радою. Перший рядок вхідного файлу містить два цілих числа \textbf{N} (\textbf{1} ≤ \textbf{N} ≤ \textbf{100}) та \textbf{M} (\textbf{1} ≤ \textbf{M} ≤ \textbf{100}), відокремлених пропуском. \textbf{N} --- число муніципальних будівель у місті (усі вони пронумеровані числами від \textbf{1} до \textbf{N}), \textbf{M} --- число бомбосховищ (усі вони пронумеровані числами від \textbf{1} до \textbf{M}). Наступні \textbf{N} рядків містять опис муніципальних будівель. Кожен рядок містить цілі числа \textbf{X_i}, \textbf{Y_i} та \textbf{B_i}, відокремлені пропусками, де \textbf{X_i}, \textbf{Y_i} (\textbf{-1000} ≤ \textbf{X_i}, \textbf{Y_i} ≤ \textbf{1000}) --- координати будівель, а \textbf{B_i} (\textbf{1} ≤ \textbf{B_i} ≤ \textbf{1000}) --- число службовців у будівлі. Опис бомбосховищ міститься у наступних \textbf{M} рядках. Кожен рядок містить цілі числа \textbf{P_j}, \textbf{Q_j} та \textbf{C_j}, відокремлені пропусками, де \textbf{P_j}, \textbf{Q_j} (\textbf{-1000} ≤ \textbf{P_j}, \textbf{Q_j} ≤ \textbf{1000}) --- координати бомбосховища, а \textbf{C_j} (\textbf{1} ≤ \textbf{C_j} ≤ \textbf{1000}) --- місткість бомбосховища. У наступних \textbf{N} рядках міститься опис плану евакуації. Кожен рядок являє собою опис плану евакуації для окремої будівлі. План евакуації з \textbf{i}-ї будівлі складається з \textbf{M} цілих чисел \textbf{E_ij}, відокремлених пропусками. \textbf{E_ij} (\textbf{0} ≤ \textbf{E_ij} ≤ \textbf{10000}) --- кількість службовців, які повинні евакуюватись з \textbf{i}-ї будівлі у \textbf{j}-те бомбосховище. Гарантиується, що план, заданий у вхідному файлі, коректний. \OutputFile Якщо план евакуації Міської Ради оптимальний, то виведіть одне слово \textbf{OPTIMAL}. У протилежному випадку виведіть у першому рядку слово \textbf{SUBOPTIMAL}, а у наступних \textbf{N} рядках виведіть Ваш план евакуації (більш оптимальний) у тому ж форматі, що і у вхідному файлі. Ваш план не зобов'язаний бути оптимальним, але повинен бути кращим плану Міської Ради.
Ліміт часу 2 секунди
Ліміт використання пам'яті 64 MiB
Вхідні дані #1
3 4
-3 3 5
-2 -2 6
2 2 5
-1 1 3
1 1 4
-2 -2 7
0 -1 3
3 1 1 0
0 0 6 0
0 3 0 2
Вихідні дані #1
SUBOPTIMAL
3 0 1 1
0 0 6 0
0 4 0 1