史题,不知道谁把它当成简单题的,实现特别麻烦。直接暴力找出所有可能时间,然后直接统计即可。

#include<bits/stdc++.h>
using i64 = long long;

int main() {
    std::cin.tie(nullptr)->sync_with_stdio(false);

    std::string s, t;
    std::cin >> s >> t;

    std::set<int> ss, st;

    auto INSERT = [&](std::string& s, std::set<int>& SET) {
        std::string m = "??:??";
        for (int i = 0; i < 24; i++) {
            for (int j = 0; j < 60; j++) {
                m[0] = (i / 10) + '0';
                m[1] = (i % 10) + '0';
                m[3] = (j / 10) + '0';
                m[4] = (j % 10) + '0';

                bool ok = 1;
                for (int k = 0; k < 5; k++) {
                    if (s[k] != '?' && s[k] != m[k]) {
                        ok = 0;
                        break;
                    }
                }

                if (ok) {
                    SET.insert(i * 60 + j);
                }
            }
        }
    };

    INSERT(s, ss);
    INSERT(t, st);

    int mi = 1e9, mx = 1;
    for (auto i : ss) {
        auto it = st.upper_bound(i);
        if (it != st.end()) {
            mi = std::min(mi, *it - i);
        }
    }

    std::cout << mi << " ";
    std::cout << *st.rbegin() - *ss.begin();

    return 0;
}

https://www.nowcoder.com/discuss/727521113110073344