史题,不知道谁把它当成简单题的,实现特别麻烦。直接暴力找出所有可能时间,然后直接统计即可。
#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;
}

京公网安备 11010502036488号