网易笔试题3:起床闹钟

牛牛总是睡过头,所以他定了很多闹钟,只有在闹钟响的时候他才会醒过来并且决定起不起床。从他起床算起他需要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
import java.io.*;
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n=sc.nextInt();
        int [][] clock=new int[n][2];
        for(int i=0;i<n;i++){
            clock[i][0]=sc.nextInt();
            clock[i][1]=sc.nextInt();
        }
        int x=sc.nextInt();
        int a=sc.nextInt();
        int b=sc.nextInt();
        int a1=a;
        int b1=b-x;
        while(b1<0){
            a1--;
            b1+=60;
            if(a1<0)
                a1+=24;
        }
        int s=a1*60+b1;
        int p=-1;
        int de=-1;
        for(int i=0;i<n;i++){
            int t=clock[i][0]*60+clock[i][1];
            //de>=0就表示来得及
            if(de==-1 && s>=t)
                de=t;
            //de>s-t,就表示当前这个时间比之前的,离预计出发时间近
            if(s>=t && t>=de){
                p=i;
                de=t;
            }
        }
        System.out.println(clock[p][0]+" "+clock[p][1]);
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值