SlideShare a Scribd company logo
XVIII Командная олимпиада
           школьников Санкт-
           Петербурга по информатике
           и программированию

Разбор задач
31 октября 2010 года

Санкт-Петербург           1
Задача A
Бактерии




           2
 Автор задачи – Михаил Дворкин
 Условие – Михаил Дворкин
 Подготовка тестов – Сергей Мельников
 Разбор – Антон Ахи




                                         3
Постановка задачи
• Дано целое число n
• За один шаг можно:
  – Разделить n на любой его простой делитель
  – Возвести число n в квадрат
• Требуется за минимальное число шагов
  получить число m


                                                4
Идея решения
• Определить, возможно ли получить m
  – Разложить m на простые делители
  – Если хотя бы один из них не является
    делителем n, то ответ «Impossible»




                                           5
Нахождение решения
• Рассмотреть задачу с конца ― получить
  из m число n, если разрешены
  операции:
  – Извлечь корень
  – Домножить на произвольное простое число




                                          6
Решение
• Разложить оба числа на простые
  множители
• Пока существует простой делитель,
  который входит в m в большей степени,
  чем в n, доводим каждый простой
  делитель m до четной степени и
  извлекаем корень
• Домножаем на оставшиеся простые

                                          7
Почему это работает?
• Единственный способ уменьшить
  показатель простого делителя ―
  извлечение корня, которое возможно
  лишь при условии четности всех
  степеней
• Перед любым извлечением корня
  невыгодно увеличивать показатель
  более чем на один
                                       8
Задача B
 Шахматная
головоломка



              9
 Автор задачи – Виталий Аксенов
 Условие – Сергей Поромов
 Подготовка тестов – Владимир
  Ульянцев
 Разбор – Антон Ахи



                                   10
Условие задачи
• Дано расположение коня на доске
• Требуется поставить ладью и слона на
  доску, чтобы они били коня, но не били
  друг друга




                                           11
Как решать?
• Если слон или ладья бьют коня, то конь их не
  бьет
• Позиций на доске мало
• Переберем все возможные позиции ладьи и
  слона, из которых они бьют коня
• Проверим, что поставленные фигуры не бьют
  друг друга


                                             12
Интересные клетки
• Ладья бьет все поля в
  том же столбце или
  строке
• Слон бьет все поля с
  такой же разницей
  номеров строки и
  столбца

                          13
Задача C
Шоколад




           14
 Автор задачи – Виталий Аксенов
 Условие – Антон Ахи
 Подготовка тестов – Нияз Нигматуллин
 Разбор – Сергей Поромов




                                         15
О чем задача?




                16
Как решать?
• Перебрать всевозможные
  вертикальные и горизонтальные
  разрезы
• Проверить, можно ли хоть один из них
  провести: с разных сторон от разреза
  должны быть различные дольки, то
  есть различные числа

                                         17
Задача D
  Луна




           18
 Автор задачи – Юрий Петров
 Условие – Юрий Петров
 Подготовка тестов – Владимир
  Ульянцев
 Разбор – Сергей Поромов



                                 19
О чем задача?
• Необходимо найти луну на фотографии




                                    20
Как решать?
• Ограничения небольшие – можно и
  достаточно проверить всевозможные
  положения и размеры луны, выбрать
  наибольший размер
• Не забыть, что луна должна быть
  целиком на фотографии


                                      21
Как проверить луну?
• Проверить, что все точки фотографии
  на расстоянии не более радиуса от
  центра луны белые
• Расстояние можно считать в целых
                    2            2
  числах:  x− x 0   y − y 0  ≤r 2
• Проверка работает за O(w·h).


                                         22
Задача E
Ожерелье




           23
 Автор задачи – Михаил Дворкин
 Условие – Сергей Поромов
 Подготовка тестов – Нияз Нигматуллин
 Разбор – Сергей Мельников




                                         24
Как решать?
• Ожерелий из двух, трех, четырех и пяти
  жемчужин нет
• Для остальных возьмем ожерелье
                    -1

     11010…0
  Оно подходит, так как ось может
  проходить лишь через 1, но все такие
  оси не являются осями симметрии

                                       25
Альтернативное решение
• Генерируем случайное ожерелье
• Проверяем, есть ли ось симметрии




                                     26
Задача F
 Гонки




           27
 Автор задачи – жюри олимпиады
 Условие – Антон Банных
 Подготовка тестов – Виталик Аксенов
 Разбор – Сергей Мельников




                                        28
За какое время проедет
машина?
• Проедет x div (tv) целых сегментов
  длинной tv, сделает между ними
  x div (tv) – 1 зарядок батарей
• Если x mod (tv) не 0, то надо проехать
  ещё, а для этого зарядить батарею
• Таким образом, число зарядок: ceil(x /
  (tv)) – 1
• Остальное время едет со скоростью v
                                           29
Как решать?
• Время для одной машины
       x / v + (ceil(x / (tv)) – 1) * t
• Сравнить время, за которое машины
  достигнут финиша




                                          30
Задача G
 Робот




           31
 Автор задачи – Михаил Дворкин
 Условие – Михаил Дворкин
 Подготовка тестов – Алексей Цыпленков
 Разбор – Алексей Цыпленков




                                     32
О чем задача
• Робот переместился из начала
  координат в точку A(x, y), при этом
  робот поворачивал только на 90
  градусов направо или налево
• Дана последовательность поворотов
• Определить длины отрезков пути
  робота или некорректность пути

                                        33
Как решать?
• Длина каждого отрезка пути не меньше
  1 и не больше 106
• Для каждого направления (вверх, вниз,
  вправо, влево) найдем, есть ли отрезок
  пути робота, на котором он движется по
  этому направлению


                                       34
• Пусть робот попадет в точку B, если
  всегда будет смещаться на 1
• Чтобы попасть из В в А, нужно
  дополнительно сместиться на вектор А
  –В
• Разложим 1, 0 k 2  0,1– В3по 0 k 4  0,−1 
    A−B=k 1 вектор А  k −1,
  направлениям:



 (все числа k1, k2, k3, k4 неотрицательны и
                                                  35
• Если все направления, коэффициенты
  при которых не равны 0, были найдены
  в пути робота, то ответ существует и
  строится следующим образом:
• Длины всех отрезков принять за 1
• Для каждого направления с ненулеывм
  k взять один произвольный отрезок
  движения по этому направлению и
  увеличить его длину на k


                                     36
• Если какого-то направления с
  ненулевым k нет в пути, то ответа не
  существует

  А

               B




                                         37
Задача H
 Санта




           38
 Автор задачи – Виталий Аксенов
 Условие – Сергей Мельников
 Подготовка тестов – Алексей Цыпленков
 Разбор – Алексей Цыпленков




                                     39
О чем задача
• Даны два списка из K и М натуральных
  чисел, каждое не больше N. Найти все
  числа от 1 до N, которых нет в этом
  списке.
• Каждое числе встречается в списках не
  более одного раза.


                                      40
Как решать?
• Так как каждое число встречается в
  списках не более одного раза, то
  количество чисел, которых нет в списке,
  равно N – K
• Так как N невелико, то за один линейный
  проход по спискам можно отметить все
  числа, которые в них есть
• За линейный проход по массиву пометок
  вывести все числа, которых нет
                                        41
Задача I.
Подстрока




            42
 Автор задачи – Антон Банных
 Условие – Антон Банных
 Подготовка тестов – Антон Банных
 Разбор – Антон Банных




                                     43
Решение
• Ахо-Корасик
• Строка abc
• Запросы:
 • 2 3 bc
 • 2 3 abc




                44
Решение
• Для каждого префикса строки запишем,
  в какой вершине автомата мы
  оказались
• а–3
• ab – 4
• abc - 5


                                     45
Решение
• Рассмотрим дерево, образованное
  суффиксными ссылками




                                    46
Решение
• Для каждого запроса нужно
  определить, встречалась ли вершина
  из соответствующего поддерева в
  отрезке




                                       47
Решение
• Перенумеруем вершины в порядке
  выхода из обхода в глубину




                                   48
Решение
• Вершины одного поддерева имеют
  последовательные номера
• Пусть пара (префикс, номер вершины)
  — точка
• Запрос — есть ли точка в
  прямоугольнике


                                        49
Решение
• Двумерное дерево отрезков — O(n log
  n)
• Одномерное дерево отрезков на сумму
• События:
 • Начало прямоугольника
 • Конец прямоугольника
 • Точка

                                    50
Задача I.
Подстрока




            51
 Автор задачи – Антон Банных
 Условие – Антон Банных
 Подготовка тестов – Антон Банных
 Разбор – Антон Банных




                                     52
Как решать?
•   Ахо-Корасик
•   Суффиксный массив
•   Суффиксное дерево
•   Суффиксный автомат




                         53
Ахо-Корасик
• Строка abc
• Запросы:
 • 2 3 bc
 • 2 3 abc




               54
Решение
• Для каждого префикса строки запишем,
  в какой вершине автомата мы
  оказались
• а–3
• ab – 4
• abc – 5

• Обозначим этот массив L
                                     55
Идея решения
• Рассмотрим дерево, образованное
  суффиксными ссылками




                                    56
Задача
• Запрос: l, r, длина строки len
• Строке соответствует вершина x
• Определить, встречалась ли вершина
  из поддерева x в L[l + len – 1, r]




                                       57
Решение
• Перенумеруем вершины в порядке
  выхода из обхода в глубину




                                   58
Решение
• Вершины одного поддерева имеют
  последовательные номера
• Пусть пара (префикс, номер вершины)
  – точка
• Запрос – есть ли точка в
  прямоугольнике


                                        59
Решение




          60
Решение
• Двумерное дерево отрезков: O(n log2 n)
• Одномерное дерево отрезков на сумму
• События:
  • Начало прямоугольника
  • Конец прямоугольника
  • Точка



                                       61
Асимптотика
• Ахо-Корасик: O(n)
• Перенумерация вершин: O(n)
• Обработка запросов: O(n log n)




                                   62
Задача J
  Вода




           63
 Автор задачи – Виталий Аксенов
 Условие – Антон Ахи
 Подготовка тестов – Антон Ахи
 Разбор – Антон Банных




                                   64
Как решать?
• Поддерживаем текущий уровень воды
• Поддерживаем суммарную скорость
  вытекания воды
• Обрабатываем события




                                      65
События
• Уровень воды достиг очередного
  отверстия
• Запрос на уровень воды
• Появление новой течи
• Устранение течи



                                   66
Решение
• Определяем ближайшее событие
• Вычисляем уровень воды к моменту
  наступления события
• Обрабатываем событие




                                     67
Реализация
• Выделим «интересные высоты» ─ те,
  которые встречаются в запросах
• Храним скорость вытекания воды через
  отверстия на высоте h
• Событие ─ достижение «интересной
  высоты»


                                     68
Реализация
• Появление и починка течи ─ изменение
  соответствующего элемента массива и
  суммарной скорости вытекания
• Запрос на определение уровня воды ─
  вывод текущего уровня
• Достижение «интересной высоты» ─
  изменение суммарной скорости
  вытекания
                                     69
Асимптотика
• Выделение «интересных высот»
  – сортировка: O(n log n)
  – хеш-таблица: O(n)
• Обработка событий: O(n)
• Итого: O(n) или O(n log n)



                                 70
Спасибо за внимание!
   Вопросы?

http://neerc.ifmo.ru/school


                       71

More Related Content

Viewers also liked (7)

лексические особенности н-т_текста
лексические особенности н-т_тексталексические особенности н-т_текста
лексические особенности н-т_текста
 
Newsletter July 2010
Newsletter July 2010Newsletter July 2010
Newsletter July 2010
 
Les tic a..[1] final
Les tic a..[1] finalLes tic a..[1] final
Les tic a..[1] final
 
How is a_self_portraitlike_a_memoir_
How is a_self_portraitlike_a_memoir_How is a_self_portraitlike_a_memoir_
How is a_self_portraitlike_a_memoir_
 
Stud model-prez
Stud model-prezStud model-prez
Stud model-prez
 
Missio Dei as revealed in Exodus
Missio Dei as revealed in ExodusMissio Dei as revealed in Exodus
Missio Dei as revealed in Exodus
 
Tagalogsaying
TagalogsayingTagalogsaying
Tagalogsaying
 

Similar to Analysis

квадратики
квадратикиквадратики
квадратики
mitusova
 
квадратики
квадратикиквадратики
квадратики
Maria1808
 
подготовка к гиа (2)
подготовка к гиа (2)подготовка к гиа (2)
подготовка к гиа (2)
Loge Zanza
 
493458
493458493458
493458
fomga
 
проект "Способы решения квадратных уравнений"
 проект "Способы решения квадратных уравнений" проект "Способы решения квадратных уравнений"
проект "Способы решения квадратных уравнений"
suvalex
 
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
Nikolay Grebenshikov
 

Similar to Analysis (15)

аксиомы в кленовых листьях
аксиомы в кленовых листьяхаксиомы в кленовых листьях
аксиомы в кленовых листьях
 
Урок математики в 6 классе "Координатная плоскость"
Урок математики в 6 классе "Координатная плоскость"Урок математики в 6 классе "Координатная плоскость"
Урок математики в 6 классе "Координатная плоскость"
 
квадратики
квадратикиквадратики
квадратики
 
квадратики
квадратикиквадратики
квадратики
 
подготовка к гиа (2)
подготовка к гиа (2)подготовка к гиа (2)
подготовка к гиа (2)
 
Защита информации семинар №7
Защита информации семинар №7Защита информации семинар №7
Защита информации семинар №7
 
Основы комбинаторики II. Разбор задач
Основы комбинаторики II. Разбор задачОсновы комбинаторики II. Разбор задач
Основы комбинаторики II. Разбор задач
 
493458
493458493458
493458
 
Matemaatikaeksam
MatemaatikaeksamMatemaatikaeksam
Matemaatikaeksam
 
L05 features
L05 featuresL05 features
L05 features
 
проект "Способы решения квадратных уравнений"
 проект "Способы решения квадратных уравнений" проект "Способы решения квадратных уравнений"
проект "Способы решения квадратных уравнений"
 
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
 
Игра для 10-11 классов "Математический поезд"
Игра для 10-11 классов "Математический поезд"Игра для 10-11 классов "Математический поезд"
Игра для 10-11 классов "Математический поезд"
 
Урок математики в 6 классе "Параллельные прямые"
Урок математики в 6 классе "Параллельные прямые"Урок математики в 6 классе "Параллельные прямые"
Урок математики в 6 классе "Параллельные прямые"
 
Урок математики в 6 классе "Перпендикулярные прямые"
Урок математики в 6 классе "Перпендикулярные прямые"Урок математики в 6 классе "Перпендикулярные прямые"
Урок математики в 6 классе "Перпендикулярные прямые"
 

Analysis

  • 1. XVIII Командная олимпиада школьников Санкт- Петербурга по информатике и программированию Разбор задач 31 октября 2010 года Санкт-Петербург 1
  • 3.  Автор задачи – Михаил Дворкин  Условие – Михаил Дворкин  Подготовка тестов – Сергей Мельников  Разбор – Антон Ахи 3
  • 4. Постановка задачи • Дано целое число n • За один шаг можно: – Разделить n на любой его простой делитель – Возвести число n в квадрат • Требуется за минимальное число шагов получить число m 4
  • 5. Идея решения • Определить, возможно ли получить m – Разложить m на простые делители – Если хотя бы один из них не является делителем n, то ответ «Impossible» 5
  • 6. Нахождение решения • Рассмотреть задачу с конца ― получить из m число n, если разрешены операции: – Извлечь корень – Домножить на произвольное простое число 6
  • 7. Решение • Разложить оба числа на простые множители • Пока существует простой делитель, который входит в m в большей степени, чем в n, доводим каждый простой делитель m до четной степени и извлекаем корень • Домножаем на оставшиеся простые 7
  • 8. Почему это работает? • Единственный способ уменьшить показатель простого делителя ― извлечение корня, которое возможно лишь при условии четности всех степеней • Перед любым извлечением корня невыгодно увеличивать показатель более чем на один 8
  • 10.  Автор задачи – Виталий Аксенов  Условие – Сергей Поромов  Подготовка тестов – Владимир Ульянцев  Разбор – Антон Ахи 10
  • 11. Условие задачи • Дано расположение коня на доске • Требуется поставить ладью и слона на доску, чтобы они били коня, но не били друг друга 11
  • 12. Как решать? • Если слон или ладья бьют коня, то конь их не бьет • Позиций на доске мало • Переберем все возможные позиции ладьи и слона, из которых они бьют коня • Проверим, что поставленные фигуры не бьют друг друга 12
  • 13. Интересные клетки • Ладья бьет все поля в том же столбце или строке • Слон бьет все поля с такой же разницей номеров строки и столбца 13
  • 15.  Автор задачи – Виталий Аксенов  Условие – Антон Ахи  Подготовка тестов – Нияз Нигматуллин  Разбор – Сергей Поромов 15
  • 17. Как решать? • Перебрать всевозможные вертикальные и горизонтальные разрезы • Проверить, можно ли хоть один из них провести: с разных сторон от разреза должны быть различные дольки, то есть различные числа 17
  • 18. Задача D Луна 18
  • 19.  Автор задачи – Юрий Петров  Условие – Юрий Петров  Подготовка тестов – Владимир Ульянцев  Разбор – Сергей Поромов 19
  • 20. О чем задача? • Необходимо найти луну на фотографии 20
  • 21. Как решать? • Ограничения небольшие – можно и достаточно проверить всевозможные положения и размеры луны, выбрать наибольший размер • Не забыть, что луна должна быть целиком на фотографии 21
  • 22. Как проверить луну? • Проверить, что все точки фотографии на расстоянии не более радиуса от центра луны белые • Расстояние можно считать в целых 2 2 числах:  x− x 0   y − y 0  ≤r 2 • Проверка работает за O(w·h). 22
  • 24.  Автор задачи – Михаил Дворкин  Условие – Сергей Поромов  Подготовка тестов – Нияз Нигматуллин  Разбор – Сергей Мельников 24
  • 25. Как решать? • Ожерелий из двух, трех, четырех и пяти жемчужин нет • Для остальных возьмем ожерелье -1 11010…0 Оно подходит, так как ось может проходить лишь через 1, но все такие оси не являются осями симметрии 25
  • 26. Альтернативное решение • Генерируем случайное ожерелье • Проверяем, есть ли ось симметрии 26
  • 28.  Автор задачи – жюри олимпиады  Условие – Антон Банных  Подготовка тестов – Виталик Аксенов  Разбор – Сергей Мельников 28
  • 29. За какое время проедет машина? • Проедет x div (tv) целых сегментов длинной tv, сделает между ними x div (tv) – 1 зарядок батарей • Если x mod (tv) не 0, то надо проехать ещё, а для этого зарядить батарею • Таким образом, число зарядок: ceil(x / (tv)) – 1 • Остальное время едет со скоростью v 29
  • 30. Как решать? • Время для одной машины x / v + (ceil(x / (tv)) – 1) * t • Сравнить время, за которое машины достигнут финиша 30
  • 32.  Автор задачи – Михаил Дворкин  Условие – Михаил Дворкин  Подготовка тестов – Алексей Цыпленков  Разбор – Алексей Цыпленков 32
  • 33. О чем задача • Робот переместился из начала координат в точку A(x, y), при этом робот поворачивал только на 90 градусов направо или налево • Дана последовательность поворотов • Определить длины отрезков пути робота или некорректность пути 33
  • 34. Как решать? • Длина каждого отрезка пути не меньше 1 и не больше 106 • Для каждого направления (вверх, вниз, вправо, влево) найдем, есть ли отрезок пути робота, на котором он движется по этому направлению 34
  • 35. • Пусть робот попадет в точку B, если всегда будет смещаться на 1 • Чтобы попасть из В в А, нужно дополнительно сместиться на вектор А –В • Разложим 1, 0 k 2  0,1– В3по 0 k 4  0,−1  A−B=k 1 вектор А  k −1, направлениям: (все числа k1, k2, k3, k4 неотрицательны и 35
  • 36. • Если все направления, коэффициенты при которых не равны 0, были найдены в пути робота, то ответ существует и строится следующим образом: • Длины всех отрезков принять за 1 • Для каждого направления с ненулеывм k взять один произвольный отрезок движения по этому направлению и увеличить его длину на k 36
  • 37. • Если какого-то направления с ненулевым k нет в пути, то ответа не существует А B 37
  • 39.  Автор задачи – Виталий Аксенов  Условие – Сергей Мельников  Подготовка тестов – Алексей Цыпленков  Разбор – Алексей Цыпленков 39
  • 40. О чем задача • Даны два списка из K и М натуральных чисел, каждое не больше N. Найти все числа от 1 до N, которых нет в этом списке. • Каждое числе встречается в списках не более одного раза. 40
  • 41. Как решать? • Так как каждое число встречается в списках не более одного раза, то количество чисел, которых нет в списке, равно N – K • Так как N невелико, то за один линейный проход по спискам можно отметить все числа, которые в них есть • За линейный проход по массиву пометок вывести все числа, которых нет 41
  • 43.  Автор задачи – Антон Банных  Условие – Антон Банных  Подготовка тестов – Антон Банных  Разбор – Антон Банных 43
  • 44. Решение • Ахо-Корасик • Строка abc • Запросы: • 2 3 bc • 2 3 abc 44
  • 45. Решение • Для каждого префикса строки запишем, в какой вершине автомата мы оказались • а–3 • ab – 4 • abc - 5 45
  • 46. Решение • Рассмотрим дерево, образованное суффиксными ссылками 46
  • 47. Решение • Для каждого запроса нужно определить, встречалась ли вершина из соответствующего поддерева в отрезке 47
  • 48. Решение • Перенумеруем вершины в порядке выхода из обхода в глубину 48
  • 49. Решение • Вершины одного поддерева имеют последовательные номера • Пусть пара (префикс, номер вершины) — точка • Запрос — есть ли точка в прямоугольнике 49
  • 50. Решение • Двумерное дерево отрезков — O(n log n) • Одномерное дерево отрезков на сумму • События: • Начало прямоугольника • Конец прямоугольника • Точка 50
  • 52.  Автор задачи – Антон Банных  Условие – Антон Банных  Подготовка тестов – Антон Банных  Разбор – Антон Банных 52
  • 53. Как решать? • Ахо-Корасик • Суффиксный массив • Суффиксное дерево • Суффиксный автомат 53
  • 54. Ахо-Корасик • Строка abc • Запросы: • 2 3 bc • 2 3 abc 54
  • 55. Решение • Для каждого префикса строки запишем, в какой вершине автомата мы оказались • а–3 • ab – 4 • abc – 5 • Обозначим этот массив L 55
  • 56. Идея решения • Рассмотрим дерево, образованное суффиксными ссылками 56
  • 57. Задача • Запрос: l, r, длина строки len • Строке соответствует вершина x • Определить, встречалась ли вершина из поддерева x в L[l + len – 1, r] 57
  • 58. Решение • Перенумеруем вершины в порядке выхода из обхода в глубину 58
  • 59. Решение • Вершины одного поддерева имеют последовательные номера • Пусть пара (префикс, номер вершины) – точка • Запрос – есть ли точка в прямоугольнике 59
  • 61. Решение • Двумерное дерево отрезков: O(n log2 n) • Одномерное дерево отрезков на сумму • События: • Начало прямоугольника • Конец прямоугольника • Точка 61
  • 62. Асимптотика • Ахо-Корасик: O(n) • Перенумерация вершин: O(n) • Обработка запросов: O(n log n) 62
  • 63. Задача J Вода 63
  • 64.  Автор задачи – Виталий Аксенов  Условие – Антон Ахи  Подготовка тестов – Антон Ахи  Разбор – Антон Банных 64
  • 65. Как решать? • Поддерживаем текущий уровень воды • Поддерживаем суммарную скорость вытекания воды • Обрабатываем события 65
  • 66. События • Уровень воды достиг очередного отверстия • Запрос на уровень воды • Появление новой течи • Устранение течи 66
  • 67. Решение • Определяем ближайшее событие • Вычисляем уровень воды к моменту наступления события • Обрабатываем событие 67
  • 68. Реализация • Выделим «интересные высоты» ─ те, которые встречаются в запросах • Храним скорость вытекания воды через отверстия на высоте h • Событие ─ достижение «интересной высоты» 68
  • 69. Реализация • Появление и починка течи ─ изменение соответствующего элемента массива и суммарной скорости вытекания • Запрос на определение уровня воды ─ вывод текущего уровня • Достижение «интересной высоты» ─ изменение суммарной скорости вытекания 69
  • 70. Асимптотика • Выделение «интересных высот» – сортировка: O(n log n) – хеш-таблица: O(n) • Обработка событий: O(n) • Итого: O(n) или O(n log n) 70
  • 71. Спасибо за внимание! Вопросы? http://neerc.ifmo.ru/school 71