牛客网--牛牛的闹钟
牛??偸撬^頭,所以他定了很多鬧鐘,只有在鬧鐘響的時候他才會醒過來并且決定起不起床。從他起床算起他需要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輸出
復制
6 0將鬧鐘的小時和分鐘加在一起,hour*60+minute,之后通過排序,開始遍歷,尋找哪個鬧鐘的時間加上花費的時間還可以按時到校
代碼:
#include<stdio.h>
#include<iostream>
#include <algorithm>
using namespace std;
typedef struct Clock1
{
?? ?int hour;
?? ?int minute;
?? ?int time;
}Clock;
bool cmp1(Clock x,Clock y)
{
?? ?return x.time<y.time;
?? ?
}
int main()
{
?? ?int n,i,pay,hour,minute,sum=0;
?? ?scanf("%d",&n);
?? ?Clock clo[n];
?? ?for(i=0;i<n;i++)
?? ?{
?? ??? ?scanf("%d%d",&clo[i].hour,&clo[i].minute);
?? ??? ?clo[i].time=clo[i].hour*60+clo[i].minute;
?? ?}
?? ?scanf("%d",&pay);
?? ?scanf("%d%d",&hour,&minute);
?? ?sum=hour*60+minute;
?? ?sort(clo,clo+n,cmp1);
?? ?for(i=n-1;i>=0;i--)
?? ?{
?? ??? ?if(clo[i].time+pay<=sum)
?? ??? ?{
?? ??? ??? ?printf("%d %d\n",clo[i].time/60,clo[i].minute%60);
?? ??? ??? ?break;
?? ??? ?}
?? ?}
}
總結
以上是生活随笔為你收集整理的牛客网--牛牛的闹钟的全部內容,希望文章能夠幫你解決所遇到的問題。