牛牛的闹钟

题目:

牛牛总是睡过头,所以他定了很多闹钟,只有在闹钟响的时候他才会醒过来并且决定起不起床。从他起床算起他需要X分钟到达教室,上课时间为当天的AB分,请问他最晚可以什么时间起床

输入描述:

每个输入包含一个测试用例。 
每个测试用例的第一行包含一个正整数,表示闹钟的数量N。 
接下来的N行每行包含两个整数,表示这个闹钟响起的时间为分。 
接下来的一行包含一个整数,表示从起床算起他需要分钟到达教室。 
接下来的一行包含两个整数,表示上课时间为时分。 
数据保证至少有一个闹钟可以让牛牛及时到达教室。

输出描述:

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

样例:

in:
3 
5 0 
6 0 
7 0 
59 
6 59

out:
6 0

注意到校时间-x后的处理即可。

AC代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 struct node{
 5     int a,b;
 6 }a[110],temp,res;
 7 
 8 int cmp(node a,node b){
 9     if(a.a==b.a)
10     return a.b<b.b;
11     else
12     return a.a<b.a;
13 }
14 
15 int main(){
16     int n,t;
17     cin>>n;
18     for(int i=0;i<n;i++){
19         cin>>a[i].a>>a[i].b;
20     }
21     cin>>t;
22     cin>>temp.a>>temp.b;
23     sort(a,a+n,cmp);
24     temp.b-=t;
25     if(temp.b<0){
26         int x=0-temp.b;
27         temp.a-=x/60+1;
28         temp.b=60-x%60;
29     }
30     //cout<<temp.a<<" "<<temp.b<<endl;
31     for(int i=n-1;i>=0;i--){
32         if(a[i].a<temp.a||a[i].a==temp.a&&a[i].b<=temp.b){
33             cout<<a[i].a<<" "<<a[i].b<<endl;
34             break;
35         }
36     }
37     return 0;
38 }
原文地址:https://www.cnblogs.com/Kiven5197/p/8718297.html