solution.cpp 886 字节
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
#include <iostream>

using namespace std;

int getse(int h, int m, int s) { return h * 3600 + m * 60 + s; }
int gettime()
{
    string line;
    getline(cin, line);

    if (line.back() != ')')
        line += "(+0)"; //判断末尾是否有异日情况 无则加上(+0)方便格式化算时间
    int h1, h2, m1, m2, s1, s2, d;
    sscanf(line.c_str(), "%d:%d:%d %d:%d:%d (+%d)", &h1, &m1, &s1, &h2, &m2, &s2, &d); //c_str 放入string字符串 实际是string 到const char* 同时我们读入起降两个时间 和 day
    return getse(h2, m2, s2) - getse(h1, m1, s1) + d * 3600 * 24;
}
int main()
{
    int n;
    cin >> n;

    getchar(); //吞掉int 与 string 中间的回车

    while (n--)
    {
        int time = (gettime() + gettime()) / 2;
        printf("%02d:%02d:%02d\n", time / 3600, time % 3600 / 60, time % 60); //02d没有两位则用0补足
    }
    return 0;
}