题目:
牛牛总是睡过头,所以他定了很多闹钟,只有在闹钟响的时候他才会醒过来并且决定起不起床。从他起床算起他需要
X
分钟到达教室,上课时间为当天的A
时B
分,请问他最晚可以什么时间起床输入描述:
每个输入包含一个测试用例。
每个测试用例的第一行包含一个正整数,表示闹钟的数量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 }