#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
/*
飞行时间的计算:
设起飞时间是S,到达时间是E,单程飞行时间是X,时差是T。
从A到B:S1+X+T=E1
从B到A:S1+X-T=E2
整理两式得:2X=(E1-S1) + (E2-S1),答案就是X。
可见,并不需要计算时差T,因为一去一回,互相抵消了。
*/
// 将时间差转换为以秒为单位
int get_seconds(int h, int m, int s){
return h * 3600 + m * 60 + s;
}
// 获取降落与起飞之间的时间差
int get_time(){
string line;
// 此处getline函数接收保存到line中后,不包含'\n'
getline(cin, line);
// 统一日期格式
if (line.back() != ')'){
line += "(+0)";
}
int h1, h2, m1, m2, s1, s2, d;
// 将line中的时间读入以上变量
sscanf(line.c_str(), "%d:%d:%d %d:%d:%d (+%d)", &h1, &m1, &s1, &h2, &m2, &s2, &d);
return get_seconds(h2, m2, s2) - get_seconds(h1, m1, s1) + d * 24 *3600;
}
int main(){
int n;
scanf("%d", &n);
string line;
getline(cin, line); // 忽略掉第一行的回车
while(n--){
int time = (get_time() + get_time()) / 2;
int hour = time / 3600;
int minute = time % 3600 / 60;
int second = time % 60;
printf("%02d:%02d:%02d\n", hour, minute, second);
}
return 0;
}
1231. 航班时间
最新推荐文章于 2023-01-03 17:37:47 发布