网易-起床闹钟

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zh1204190329/article/details/81585984

牛牛总是睡过头,所以他定了很多闹钟,只有在闹钟响的时候他才会醒过来并且决定起不起床。从他起床算起他需要X分钟到达教室,上课时间为当天的A时B分,请问他最晚可以什么时间起床
输入描述:
每个输入包含一个测试用例。
每个测试用例的第一行包含一个正整数,表示闹钟的数量N(N<=100)。
接下来的N行每行包含两个整数,表示这个闹钟响起的时间为Hi(0<=A<24)时Mi(0<=B<60)分。
接下来的一行包含一个整数,表示从起床算起他需要X(0<=X<=100)分钟到达教室。
接下来的一行包含两个整数,表示上课时间为A(0<=A<24)时B(0<=B<60)分。
数据保证至少有一个闹钟可以让牛牛及时到达教室。


输出描述:
输出两个整数表示牛牛最晚起床时间。

输入例子1:
3
5 0
6 0
7 0
59
6 59

输出例子1:
6 0

#include<iostream>
#include<vector>
#include <algorithm>

using namespace std;

typedef struct _clock
{
    int hour;
    int minutes;
    int overtime;
    bool state;
}tclock;

bool cmp1(tclock a, tclock b)
{
    if (a.state != b.state)
        return a.state > b.state;
    else{
        if (a.overtime != b.overtime)
            return a.overtime < b.overtime;
    }
}


int main()
{
    int N = 0;
    cin >> N;

    tclock alarm[N];
 // vector<tclock> alarm(N);
    for (int i = 0; i < N; i++)
    {
        cin >> alarm[i].hour >> alarm[i].minutes;
        alarm[i].state = false;
        alarm[i].overtime = 0;
    

    struct _clock classBegin; //
  // vector<tclock> calssBegin;
    int timeToclass = 0;
 //   cout << "-------------\n" << endl;
    cin >> timeToclass;
    cin >> classBegin.hour >> classBegin.minutes;

    int tim = classBegin.hour * 60 + classBegin.minutes;

    for (int i = 0;  i < N; i++)
    {
        int ala = alarm[i].hour * 60 + alarm[i].minutes;
        if (ala > tim)
        {
            alarm[i].state = false;
            alarm[i].overtime = ala - tim;
        }
        else if ((tim - ala) >= timeToclass )
        {
            alarm[i].state = true;
            alarm[i].overtime = tim - ala;
        }
        else{
            alarm[i].state = false;
            alarm[i].overtime = tim - ala;
        }
    }
    //sort(alarm.begin(), alarm.end(),cmp1);
    sort(alarm, alarm+N, cmp1);
    cout << alarm[0].hour << " " << alarm[0].minutes << endl;

    return 0;
}

猜你喜欢

转载自blog.csdn.net/zh1204190329/article/details/81585984