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

Основа піраміди

Основа піраміди

\includegraphics{https://static.e-olymp.com/content/e3/e390003da5a9fb3cf824dbf8a8e4480434029106.jpg} Вас попросили знайти розмір найбільшого з можливих місць для будівництва нової піраміди. Для того, щоб допомогти вам прийняти рішення, вам предоставлено план доступної ділянки, який для зручності поділено сіткою на \textbf{MxN} квадратних клітин. Основа піраміди повинна бути квадратом зі сторонами, паралельними сторонам сітки. На плані показано множину з \textbf{P} перешкод, які є прямокутниками зі сторонами, паралельними сторонам сітки. Прямокутники можуть перекриватись. Щоб побудувати піраміду, всі клітини, покриті її основою, повинні бути очищені від перешкод. Видалення \textbf{i}-ї перешкоди має вартість \textbf{C_i}. Всякий раз, коли перешкода видаляється, вона видалається повністю, тоьто, ви не можете видалити лише частину перешкоди. Слід відмітити, що видалення перешкоди не впливає на інші перешкоди, з якими вона перекривалась. Напишіть програму, яка за заданими розмірностями сітки \textbf{M} та \textbf{N}, опису \textbf{P} перешкод, вартості видалення кожної з них, а також наявному бюджету \textbf{B} знаходить максимальну довжину сторони найбільшого з можливих місць для основи піраміды, такого, що сумарна вартість видалення перешкод не перевищує \textbf{B}. \textbf{Обмеження} Ваша програма буде оцінена з використанням трьо неперетинаючихся наборів тестів. Для всіх них виконуються наступні обмеження: \textbf{1 <= M, N <= 1 000 000} (\textbf{M}, \textbf{N} -- розмірності решітки) \textbf{1 <= C_i <= 7 000} (\textbf{C_i} -- вартість видалення \textbf{i}-ї перешкоди) \textbf{1 <= X_i1 <= X_i2 <= M} (\textbf{X_i1} та \textbf{X_i2} -- \textbf{X}-координати самої лівої та самої правої клітини \textbf{i}-ї перешкоди, відповідно) \textbf{1 <= Y_i1 <= Y_i2 <= N} (\textbf{Y_i1} та \textbf{Y_i2} -- \textbf{Y}-координати самої нижньої та самої верхньої клітини \textbf{i}-ї перешкоди, відповідно) \InputFile Ваша програма повинна читати зі стандартного вводу дані у наступному форматі: • Рядок \textbf{1} містить два цілих числа, відокремлених одним пропуском -- \textbf{M} та \textbf{N}, відповідно. • Рядок \textbf{2} містить ціле число \textbf{B} -- ваш бюджет. • Рядок \textbf{3} містить ціле число \textbf{P} -- кількість перешкод, що є на плані. • Кожен з наступних \textbf{P} рядків описує перешкоду: \textbf{i}-ий з цих рядків описує \textbf{i}-у перешкоду. Кажен рядок складається з \textbf{5} цілих чисел: \textbf{X_i1}, \textbf{Y_i1}, \textbf{X_i2}, \textbf{Y_i2}, та \textbf{C_i}, відокремлених одним пропуском. Вони задають відповідно координати нижньої лівої клітини перешкоди, координати верхньої правої клітини перешкоди та вартість видалення перешкоди. Нижня ліва клітина решітки має координати (\textbf{1}, \textbf{1}), верхня права клітина решітки має координати (\textbf{M}, \textbf{N}). \OutputFile Ваша програма повинна вивести у стандартний вивід єдиний рядок, що містить одне ціле число -- максимально можливу довжину сторони основи піраміди, яку можна побудувати. Якщо піраміду побудувати не можна, ваша програма повинна вивести число \textbf{0}.
Ліміт часу 15 секунд
Ліміт використання пам'яті 64 MiB
Вхідні дані #1
6 9
42
5
4 1 6 3 12
3 6 5 6 9
1 3 3 8 24
3 8 6 9 21
5 1 6 2 20
Вихідні дані #1
4