#include <iostream>
#include <iomanip>
class Time {
public:
Time(int h = 0, int m = 0, int s = 0) { setTime(h, m, s); }
void setTime(int h, int m, int s) {
setHour(h);
setMinute(m);
setSecond(s);
}
void setHour(int h) { hour = (h >= 0 && h < 24) ? h : 0; }
void setMinute(int m) { minute = (m >= 0 && m < 60) ? m : 0; }
void setSecond(int s) { second = (s >= 0 && s < 60) ? s : 0; }
int getHour() const { return hour; }
int getMinute() const { return minute; }
int getSecond() const { return second; }
void tick() {
setSecond(second + 1);
if (second == 0) {
setMinute(minute + 1);
if (minute == 0) {
setHour(hour + 1);
}
}
}
void printStandard() const {
std::cout << ((hour == 0 || hour == 12) ? 12 : hour % 12) << ":"
<< std::setfill('0') << std::setw(2) << minute << ":"
<< std::setw(2) << second << (hour < 12 ? " AM" : " PM");
}
private:
int hour;
int minute;
int second;
};
int main() {
Time t(23, 59, 58);
for (int i = 0; i < 5; ++i) {
t.printStandard();
std::cout << std::endl;
t.tick();
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KCmNsYXNzIFRpbWUgewpwdWJsaWM6CiAgICBUaW1lKGludCBoID0gMCwgaW50IG0gPSAwLCBpbnQgcyA9IDApIHsgc2V0VGltZShoLCBtLCBzKTsgfQogICAgCiAgICB2b2lkIHNldFRpbWUoaW50IGgsIGludCBtLCBpbnQgcykgewogICAgICAgIHNldEhvdXIoaCk7CiAgICAgICAgc2V0TWludXRlKG0pOwogICAgICAgIHNldFNlY29uZChzKTsKICAgIH0KCiAgICB2b2lkIHNldEhvdXIoaW50IGgpIHsgaG91ciA9IChoID49IDAgJiYgaCA8IDI0KSA/IGggOiAwOyB9CiAgICB2b2lkIHNldE1pbnV0ZShpbnQgbSkgeyBtaW51dGUgPSAobSA+PSAwICYmIG0gPCA2MCkgPyBtIDogMDsgfQogICAgdm9pZCBzZXRTZWNvbmQoaW50IHMpIHsgc2Vjb25kID0gKHMgPj0gMCAmJiBzIDwgNjApID8gcyA6IDA7IH0KCiAgICBpbnQgZ2V0SG91cigpIGNvbnN0IHsgcmV0dXJuIGhvdXI7IH0KICAgIGludCBnZXRNaW51dGUoKSBjb25zdCB7IHJldHVybiBtaW51dGU7IH0KICAgIGludCBnZXRTZWNvbmQoKSBjb25zdCB7IHJldHVybiBzZWNvbmQ7IH0KCiAgICB2b2lkIHRpY2soKSB7CiAgICAgICAgc2V0U2Vjb25kKHNlY29uZCArIDEpOwogICAgICAgIGlmIChzZWNvbmQgPT0gMCkgewogICAgICAgICAgICBzZXRNaW51dGUobWludXRlICsgMSk7CiAgICAgICAgICAgIGlmIChtaW51dGUgPT0gMCkgewogICAgICAgICAgICAgICAgc2V0SG91cihob3VyICsgMSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgdm9pZCBwcmludFN0YW5kYXJkKCkgY29uc3QgewogICAgICAgIHN0ZDo6Y291dCA8PCAoKGhvdXIgPT0gMCB8fCBob3VyID09IDEyKSA/IDEyIDogaG91ciAlIDEyKSA8PCAiOiIKICAgICAgICAgICAgICAgICAgPDwgc3RkOjpzZXRmaWxsKCcwJykgPDwgc3RkOjpzZXR3KDIpIDw8IG1pbnV0ZSA8PCAiOiIKICAgICAgICAgICAgICAgICAgPDwgc3RkOjpzZXR3KDIpIDw8IHNlY29uZCA8PCAoaG91ciA8IDEyID8gIiBBTSIgOiAiIFBNIik7CiAgICB9Cgpwcml2YXRlOgogICAgaW50IGhvdXI7CiAgICBpbnQgbWludXRlOwogICAgaW50IHNlY29uZDsKfTsKCmludCBtYWluKCkgewogICAgVGltZSB0KDIzLCA1OSwgNTgpOwogICAgCiAgICBmb3IgKGludCBpID0gMDsgaSA8IDU7ICsraSkgewogICAgICAgIHQucHJpbnRTdGFuZGFyZCgpOwogICAgICAgIHN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7CiAgICAgICAgdC50aWNrKCk7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==