Блок задач

5. Парочка классов

Сложность 6

Задача «Тотальный контроль»

Необходимо реализовать алгоритм поиска скоплений людей.

Входные данные

Файл посещений людьми разных мест (географических), каждая строчка которого содержит следующую информацию:

  • Период времени, в который зарегистрировано нахождение пользователя в определенном меcте startTs - endTs (в формате Timestamp).
  • Идентификатор пользователя user_id (целое положительное число).
  • Идентификатор местоположения (строка): например, Mega, 'Aura', Lenin sqr и т.д.

Задача

Реализовать набор классов, позволяющий определить скопления людей (некоторое количество людей, находившихся в одном месте). Необходимо задать (через командную сроку или в коде) количество людей в одном месте, достаточное для утверждения, что это «скопление».

Выходные данные

Необходимо выдать следующую информацию о каждом скоплении:

  1. Ts начала.
  2. Ts конца.
  3. Максимальное количество людей.
  4. Среднее количество людей.
  5. Список всех user_id, причастных к этому скоплению.