南邮 OJ 1508 Lithium去自习2:赶时间

Lithium去自习2:赶时间

时间限制(普通/Java) :  1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 156            测试通过 : 40 

比赛描述

距离期末考试还有六天的时间了,昨天Lithium在冒雨去自习的路上被室友挤出伞外淋成了落汤鸡,最终一整天都呆在医务室里挂水。为了弥补损失的复习时间,Lithium决定今天要以最快的速度赶到自习教室,如果在路上遇到了比他更快的同学,他就会把自己的速度提高到和对方一样,现在请你计算出Lithium赶到教室的时间。



输入

输入的第一行是Lithium的出发时间和他赶到教室所需的时间。第二行是一个非负整数N(N<=100),表示还有N个同学会和Lithium一同前往教室。之后N行给出了这些同学的出发时间和路上需要消耗的时间。

测试数据中所有的时间信息都按照“时:分:秒”的格式给出。一天中时间的表示范围为00:00:00~23:59:59, “24:00:00”视为第二天的零点整。

 

输出

按“时:分:秒”的格式输出Lithium到达教室时的时间,当时、分、秒的数值只有一位时,其前导零不能省略。

样例输入

08:00:00 01:30:00
6
06:00:00 00:40:00
07:00:00 01:45:30
08:00:00 01:15:40
09:05:30 00:02:30
08:20:00 01:40:15
09:00:00 00:10:35

样例输出

09:08:00

提示

 

题目来源

Lithium



#include<iostream>
#include<string>
using namespace std;

int timeToInt(string s){
	return ((s[0]-'0')*10+s[1]-'0')*3600 + ((s[3]-'0')*10+s[4]-'0')*60 + (s[6]-'0')*10+s[7]-'0';
}

int main(){
	string s1,s2;
	int n,startTime,costTime,arriveTime,st,ct,at;
	cin>>s1>>s2>>n;
	startTime = timeToInt(s1);
	costTime = timeToInt(s2);
	arriveTime = startTime + costTime;
	while(n--){
		cin>>s1>>s2;
		st = timeToInt(s1);
		ct = timeToInt(s2);
		at = st+ct;
		if(startTime <= st && arriveTime > at){
			arriveTime = at;
		}
	}
	arriveTime %= (3600*24);			//WA2
	printf("%02d:",arriveTime/3600);
	arriveTime %= 3600;
	printf("%02d:",arriveTime/60);
	arriveTime %= 60;
	printf("%02d\n",arriveTime);
}






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值