#include <cctype>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Mirrortime {
string time;
int min;
string mirror() const {
constexpr auto total = 720;
if (min == total) return "12:00"s;
const auto inv = total - min;
const auto h = inv / 60;
const auto m = inv % 60;
string t;
if (!h) t = "12:";
else {
if (h < 10) t += '0';
t += to_string(h) + ':';
}
if (m < 10) t += '0';
t += to_string(m);
return t;
}
void split() {
min = stoi(string(time.begin(), time.begin() + 2)) * 60;
min += stoi(string(time.begin() + 3, time.end()));
}
friend istream& operator>>(istream& inp, Mirrortime& mt) {
inp >> mt.time;
mt.split();
return inp;
}
friend ostream& operator<<(ostream& out, const Mirrortime& mt) {
return out << mt.mirror();
}
};
int main() {
size_t n;
cin >> n;
vector<Mirrortime> times(n);
for (auto& time : times) cin >> time;
cout.put('\n');
for (const auto& time : times) cout << time << '\n';
system("pause > nul");
}
for _ in range(int(input())):
h, m = map(int, input().split(':'))
m = -(h * 60 + m) % 720
print('%02d:%02d' % (m // 60 or 12, m % 60))
Работающий пример: https://onlinegdb.com/r9dO78Bca