ШОП: T17 Сортировки, массивы, массивы структур и пр. (11.08.09)
Задача №787. Будильники
Есть задачи на любой вкус: поиск минимума, НОД и НОК, строки, сортировка, легкий бинпоиск, очень легкая рекурсия (причем почти в точности!!! как на прошлом контесте, кто пришел во вторник на разбор - запросто решит). Задач многовато - 6. Но зато соревнование обещает быть потным. Дорешки будет много!!!
Для решения задачи удобнее перевести время в минуты. Считываем параметры будильника, в случае ежедневного будильника рассмотрим два случая: если время на нем больше чем текущее, то номер дня недели для будильника равен текущему дню, в противном случае на один больше. Если текущее время больше чем время будильника, увеличиваем его на неделю. Находим разницу с текущим временем и запоминаем наименьшую. Полученный минимальный промежуток прибавляем к текущему времени и переводим полученный результат в дни (целая часть от деления на 24*60), часы (оставшиеся от дней минуты делим на 60 нацело) и минуты (остаток от деления на 60 оставшихся от дней минут. Если число полученных дней больше чем дней недели, находим остаток от деления на 7, в случае получения нулевого остатка заменяем его на 7.