Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 
[Вернуться к задаче]   1
  1  Винк В В, 01 октября 2019 г. 18:12:38
     Выход когда кончатся изменения. Для эффективной работы нужно бегать туда - сюда. Ещё нужно учесть, что могут быть пустые столбцы, даже все.
  2  Винк В В, 01 октября 2019 г. 18:11:10
     Создадим структуру Фрагмент для массива или вектора. Поля : нижняя_грница, верхняя_граница, номер_столбца, номер_сегмента, список_связей. Нижняя_грница = L - 1, Верхняя_граница = R, номер_столбца заносятся при считывании данных. Номер_сегмента = 0, значит пока не определён. Получить список_связей с фрагментами из соседних столбцов можно так же на этапе считывания данных. Для этого в функию lower_bound подаём набор нижних_границ из предыдущего столбца и верхнюю_границу данного Фрагмента, а в функцию upper_bound - набор верхних_границ из предыдущего столбца и нижнюю_границу данного Фрагмента. Получаем полуинтервал Фрагментов из предыдущего столбца связанных с текущим. Имея список_связей рекурсивно находим номер_сегмента для каждого Фрагмента. Для каждого Сегмента нужно найти величину его смещения вниз, пусть X. Сначала всем X[i] прсиваиваем infinity, например 10^7. Потом, в бесконечном цикле, бежим по Фрагментам и изменяем X[номер_сегмента] с учётом того, что находится под ним. Выход когда кончатся изменения. Д
  3  Камынин Иван Анатольевич, 10 июня 2017 г. 2:14:08
     Очень сложная задача, куда сложнее многих с сложностью большей чем у этой :) Поставьте ей 90, что-ли...
 1

Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!

Красноярский краевой Дворец пионеров, (c)2006 - 2024, ИНН 246305493507, E-mail: admin@acmp.ru