- Описание
- Отправленные решения
291. Интервалы работы складов
У большого онлайн-магазина есть несколько складов. Не всякий товар можно хранить на любом из складов. Какие-то из складов не оборудованы холодильниками и не могут хранить замороженные продукты. Некоторые из складов небольшие, там некуда поставить крупногабаритный товар. Менеджеры заполняют таблицу, в которой указывают, когда, какие товары и на какой склад можно привозить, но делают это в удобном для себя формате.
Нужно преобразовать их записи в форму, которую сможет распознавать система распределения товаров.
Формат ввода
На вход подается CSV-файл со следующими полями:
- Идентификатор склада — целое неотрицательное число ();
- Интервал дат работы — начало и конец интервала в формате YYYY-MM-DD, разделенные пробелом;
- Тип товара — одно из строковых значений KGT, COLD, OTHER, NULL.
Если в поле "Тип товара" стоит NULL, то в указанный интервал дат склад принимает любые типы товаров.
Гарантируется, что конец интервала не превосходит начало интервала. Также гарантируется, что число записей в файле не превосходит .
Формат вывода
На выход нужно напечатать CSV-файл. Необходимо преобразовать входной файл так, чтобы выполнялись следующие условия:
- Записи отсортированы по идентификатору склада, затем по типу товара (KGT < COLD < OTHER), затем по началу интервала;
- Интервалы для одного склада и одного типа товара не пересекаются. Пересекающиеся интервалы нужно объединить в один;
- В выходном файле нет записей с типом товара NULL. Каждая запись с типом товара NULL во входном файле должна интерпретироваться как три разных записи с типами KGT, COLD, OTHER.
Ограничения
Ограничение времени
5 с
Ограничение памяти
256 МБ
Пример 1
4,2020-02-23 2020-11-01,KGT
4,2020-03-15 2020-07-12,COLD
0,2020-03-28 2021-01-31,KGT
5,2020-04-01 2020-08-25,OTHER
2,2020-11-11 2021-08-10,KGT
0,2020-03-28 2021-01-31,KGT
2,2020-11-11 2021-08-10,KGT
4,2020-02-23 2020-11-01,KGT
4,2020-03-15 2020-07-12,COLD
5,2020-04-01 2020-08-25,OTHER
Пример 2
6,2020-10-18 2021-08-22,NULL
8,2020-01-22 2020-06-10,KGT
6,2020-09-03 2020-10-03,KGT
8,2020-09-03 2020-10-22,NULL
2,2020-06-13 2020-09-19,OTHER
2,2020-10-18 2021-08-23,NULL
5,2020-08-01 2021-06-03,COLD
7,2020-07-22 2021-05-26,KGT
0,2020-12-17 2021-07-02,NULL
0,2020-12-17 2021-07-02,KGT
0,2020-12-17 2021-07-02,COLD
0,2020-12-17 2021-07-02,OTHER
2,2020-10-18 2021-08-23,KGT
2,2020-10-18 2021-08-23,COLD
2,2020-06-13 2020-09-19,OTHER
2,2020-10-18 2021-08-23,OTHER
5,2020-08-01 2021-06-03,COLD
6,2020-09-03 2020-10-03,KGT
6,2020-10-18 2021-08-22,KGT
6,2020-10-18 2021-08-22,COLD
6,2020-10-18 2021-08-22,OTHER
7,2020-07-22 2021-05-26,KGT
8,2020-01-22 2020-06-10,KGT
8,2020-09-03 2020-10-22,KGT
8,2020-09-03 2020-10-22,COLD
8,2020-09-03 2020-10-22,OTHER
Пример 3
7,2020-08-05 2020-11-20,OTHER
9,2020-08-30 2021-02-27,NULL
8,2020-11-09 2021-09-07,OTHER
7,2020-08-05 2020-11-20,OTHER
8,2020-11-09 2021-09-07,OTHER
9,2020-08-30 2021-02-27,KGT
9,2020-08-30 2021-02-27,COLD
9,2020-08-30 2021-02-27,OTHER