比较简单的题,只需要把时间全部转换为minute,然后求出剩余时间=上课时间-起床时间-路上时间,最后在所有大于等于0的剩余时间里找到最小值,对应的下标就是那个闹钟。
#include<iostream>
using namespace std;
struct node
{
int hour;
int minute;
}alarm[105];
int main()
{
int N;
cin >> N;
for (int i = 0; i < N; i++)
cin >> alarm[i].hour >> alarm[i].minute;
int time_to_school;
cin >> time_to_school;
node class_time;
cin >> class_time.hour >> class_time.minute;
int min_index = 0;
int min = (class_time.hour * 60 + class_time.minute) - (alarm[0].hour * 60 + alarm[0].minute) - time_to_school;
for (int i = 1; i < N; i++)
{
int time_left = (class_time.hour * 60 + class_time.minute) - (alarm[i].hour * 60 + alarm[i].minute) - time_to_school;
if (time_left >= 0)
{
if (time_left < min)
{
min = time_left;
min_index = i;
}
}
}
cout << alarm[min_index].hour << " " << alarm[min_index].minute << endl;
system("pause");
return 0;
}