Дежурства по датам с ограничениями
Задача по программированию с проверкой онлайн
- Сложность
- Сложная
- Языки
- Python
- JavaScript
- TypeScript
- Java
- Go
- Темы
- Даты и время
- Рекурсия и перебор
Составьте график дежурств на дни с start по end включительно ("YYYY-MM-DD", не больше 14 дней). Сотрудники staff — до 6 различных имён из латинских букв. В будний день (пн–пт) нужно ровно weekday_need дежурных, в субботу и воскресенье — ровно weekend_need. Строки unavailable вида "Имя YYYY-MM-DD" означают, что этот человек в этот день дежурить не может. Никто не дежурит больше max_streak дней подряд и больше max_shifts дней всего за период.
Среди всех допустимых графиков верните наименьший в таком порядке: дни сравниваются по очереди с первого, а состав дня — отсортированный по алфавиту список имён — сравнивается как список строк (по кодам символов). График записывается списком строк "YYYY-MM-DD:Имя1,Имя2" по дням, имена дня по алфавиту; день без дежурных — "YYYY-MM-DD:". Если допустимого графика нет, верните []. Календарь григорианский.
Пример: "2024-03-08", "2024-03-11", ["Cid", "Ann", "Bob"], 2, 1, ["Ann 2024-03-09"], 2, 3 → ["2024-03-08:Ann,Bob", "2024-03-09:Bob", "2024-03-10:Ann", "2024-03-11:Ann,Bob"].
Источник: задача CodeShare