Удаление существенных бит из вашего кода (и ваши объявления в очень странном порядке)
struct tm* tm;
tm->tm_hour = hour_input;
tm->tm_min = min_input;
delta = mktime(tm) - ts;
Итак, tm неинициализирован и указывает на случайное место. Более того, вы не заполняете структуру должным образом, и у вас есть случайный (вероятно, недействительный) год, месяц, день и секунды.
mktime попытается сделать это действительным, но если секунд достаточно много, это приведет к серьезным разрушениям ваших часов и минут. Предполагая, что программа не завершится сбоем, пока она не зашла так далеко. Вы не сказали, какую ошибку вы получили.