F. Report builder
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Узнав о ваших выдающихся успехах в программировании, к вам обратились представители Федеральной службы государственной статистики. Эта служба отслеживает и формирует статистическую информацию по множеству показателей: миграция, прирост населения, средняя заработная плата и т.д.

В каждом крупном городе есть региональное отделение этой службы. Региональные отделения ежедневно отслеживают значения показателей и записывают их в базу данных. Например, 21 октября в Красноярск прибыло 100 человек для участия в олимпиаде по программированию. А 23 октября 90 человек уехали обратно (кому-то так понравилось в Красноярске, что они решили тут остаться).

Значения показателей сохраняются не каждый день. Например, 22 октября никто не уезжал, так как все участвовали в олимпиаде. А некоторые показатели вообще считаются только по рабочим дням или по выходным.

Ваша задача - для существующей базы данных разработать систему аналитических отчетов. Возможно эти отчеты будут показывать самому президенту!

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

Первая строка содержит целое число N — количество городов с региональными отделениями службы. Далее идет N наборов данных для каждого города.

Первая строка набора данных для города содержит название города и количество показателей A[i], отслеживаемых для этого города. Далее идет A[i] наборов данных для каждого показателя.

Первая строка набора данных для показателя содержит название показателя и количество дат, на которые известны значения этого показателя. В следующих строках идут пары - дата в формате YYYY-MM-DD и значение (целое число, по модулю не более 10 000).

Названия городов и показателей — непустые строки из заглавных и строчных латинских букв, не более 10 символов. Всего в базе хранится не более 100 000 значений.

После описания базы данных идет целое число M — количество требуемых отчетов (не более 100). Описание параметров каждого отчета состоит из 6 строк:

  1. Тип отчета — строка indicator или city. Отчет по показателю или по городу.
  2. Название показателя или города, соответственно.
  3. Для отчета по показателю —- количество городов, которые нужно включить в отчет, а далее названия городов. Если указана строка all, то в отчет нужно включить все города. Для отчета по городу — количество показателей, которые нужно включить в отчет, а далее названия показателей. Если указана строка all, то в отчет нужно включить все показатели этого города.
  4. Период, за который нужны данные. Задается датой начала и датой конца в формате YYYY-MM-DD.
  5. Аналитическая операция — sum, min, max или count. Возвращаем сумму, минимум, максимум или количество значений за запрашиваемый период.
  6. Порядок сортировки. Может быть name - по имени объекта/показателя или value — по итоговому значению . Так же может быть указан необязательный параметр desc — сортировка по убыванию. В случае сортировки по итоговому значению строки с одинаковым значением всегда сортируются по названию объекта/показателя.
Выходные данные

Для каждого отчеты вывести Report < index > :  , где  < index >  — порядковый номер отчета, начиная с единицы.

Далее для каждого объекта/показателя в отчете в отдельной строке вывести его название и итоговое значение. Все строки должны быть отсортированы в соответствии параметрами отчета. Если за требуемый период нет ни одного значения показателя - вместо значения вывести символ «-».

Пример
Входные данные
2
Krsk 3
Arrive 1
2017-10-21 100
Depart 1
2017-10-23 90
Increase 3
2017-10-21 100
2017-10-22 0
2017-10-23 -90
Irk 2
Depart 1
2017-10-20 70
Arrive 1
2017-10-24 80
2
indicator
Increase
all
2017-10-20 2017-10-23
sum
value desc
city
Irk
2 Increase Arrive
2017-10-20 2017-10-24
max
name
Выходные данные
Report 1:
Krsk 10
Irk -
Report 2:
Arrive 80
Increase -