QOJ.ac

QOJ

実行時間制限: 3.0 s メモリ制限: 512 MB 満点: 100

#12939. Мистецтво з піску

統計

На художніх виставках дуже часто є стенди, де діти можуть створювати власні твори з піску. Зазвичай для цього банку або пляшку наповнюють шарами піску різних кольорів. Цього року замість пляшки для оздоблення використовують нову посудину! Це скляна коробка!

Передня грань коробки — двовимірний прямокутник, а її товщина дорівнює рівно 1 одиниці. Усередині встановлюють $n-1$ вертикальних перегородок, що ділять коробку на $n$ секцій. У наведеному нижче прикладі 3 перегородки ділять коробку на 4 секції:

problem_12939_a791341bc28f5dcc4882afd28a8fbaa0.png

Іноді діти хочуть мати певну кількість піску кожного кольору в кожній секції свого твору. Для кожної пари «секція — колір піску» вони задають мінімум і максимум. Ваше завдання — допомогти їм з'ясувати, наскільки рівним можна зробити твір. Для цього потрібно мінімізувати різницю висот піску між секцією з найвищим загальним рівнем піску та секцією з найнижчим загальним рівнем.

Вхідні дані

Кожен вхідний файл містить один тест. Зауважте, що вашу програму можуть запускати кілька разів на різних вхідних даних. Перший рядок містить 4 цілі числа, розділені пробілами: $n\ m\ w\ h$, де:

  • $n$ ($2 \le n \le 200$) — кількість секцій;
  • $m$ ($1 \le m \le 200$) — кількість кольорів піску;
  • $w,h$ ($1 \le w,h \le 5\,000$) — ширина та висота коробки (її глибина завжди дорівнює 1).

Наступний рядок містить $m$ розділених пробілами дійсних чисел $v$ ($0<v \le w\cdot h$), які мають щонайбільше 3 цифри після крапки. Вони позначають об'єми піску кожного кольору. Використовувати весь пісок не обов'язково, але мінімуми для кожної секції мають бути дотримані.

Наступний рядок містить $n-1$ розділене пробілами дійсне число $x$ ($0<x<w$), кожне з яких має щонайбільше 3 цифри після крапки. Вони позначають відстані кожної перегородки від лівої стінки. Гарантується, що значення $x$ відсортовано за зростанням.

Кожен із наступних $n$ рядків містить $m$ розділених пробілами дійсних чисел $min$ ($0 \le min \le w\cdot h$), які мають щонайбільше 3 цифри після крапки. Елемент $j$ рядка $i$ — мінімальна кількість піску кольору $j$, яку треба помістити в секцію $i$.

Кожен із наступних $n$ рядків містить $m$ розділених пробілами дійсних чисел $max$ ($0 \le max \le w\cdot h$), які мають щонайбільше 3 цифри після крапки. Елемент $j$ рядка $i$ — максимальна кількість піску кольору $j$, яку можна помістити в секцію $i$, причому $min_{ij} \le max_{ij}$.

Вихідні дані

Виведіть дійсне число, округлене рівно до 3 цифр після крапки, яке позначає найменшу можливу різницю між максимальною та мінімальною висотами піску в секціях. Завжди існує розподіл піску, що задовольняє обмеження вхідних даних.

Приклади

Вхідні дані 1

2 2 5 5
2.0 2.0
4.0
1.0 0.0
0.0 1.0
1.0 0.0
0.0 2.0

Вихідні дані 1

0.750

Вхідні дані 2

2 2 5 5
2.0 2.0
4.0
1.0 0.0
0.0 1.0
1.5 0.0
0.0 2.0

Вихідні дані 2

0.625

Вхідні дані 3

2 5 11 10
3.0 4.0 4.0 9.0 2.0
4.0
2.0 2.0 1.0 0.5 0.25
0.0 2.0 0.0 4.0 1.0
2.0 2.0 3.0 4.0 0.75
0.0 2.1 0.0 5.1 1.1

Вихідні дані 3

0.266

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.