Lithium去自习2:赶时间
时间限制(普通/Java) :
1000 MS/ 3000 MS 运行内存限制 : 65536 KByte
总提交 : 156 测试通过 : 40
总提交 : 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);
}