#include <iostream>
using namespace std;
class CThoiGian
{
private:
int hours, minutes, seconds;
public:
CThoiGian(int h = 0, int m = 0, int s = 0) : hours(h), minutes(m), seconds(s) {}
bool operator>=(const CThoiGian& time)
{
if (hours > time.hours) return true;
if (hours == time.hours && minutes > time.minutes) return true;
if (hours == time.hours && minutes == time.minutes && seconds >= time.seconds) return true;
return false;
}
bool operator!=(const CThoiGian& time)
{
return hours != time.hours || minutes != time.minutes || seconds != time.seconds;
}
CThoiGian operator+(const CThoiGian& time)
{
CThoiGian res;
res.seconds = seconds + time.seconds;
res.minutes = minutes + time.minutes + res.seconds / 60;
res.seconds %= 60;
res.hours = hours + time.hours + res.minutes / 60;
res.minutes %= 60;
return res;
}
CThoiGian operator-(CThoiGian time)
{
CThoiGian res;
res.seconds = seconds - time.seconds;
if (res.seconds < 0)
{
res.seconds += 60;
time.minutes++;
}
res.minutes = minutes - time.minutes;
if (res.minutes < 0)
{
res.minutes += 60;
time.hours++;
}
res.hours = hours - time.hours;
return res;
}
CThoiGian& operator++()
{
seconds++;
if (seconds == 60)
{
seconds = 0;
minutes++;
if (minutes == 60)
{
minutes = 0;
hours++;
if (hours == 24)
{
hours = 0;
}
}
}
return *this;
}
CThoiGian& operator--()
{
seconds--;
if (seconds == -1)
{
seconds = 59;
minutes--;
if (minutes == -1)
{
minutes = 59;
hours--;
if (hours == -1)
{
hours = 23;
}
}
}
return *this;
}
friend istream& operator>>(istream& is, CThoiGian& time)
{
is >> time.hours >> time.minutes >> time.seconds;
return is;
}
friend ostream& operator<<(ostream& os, const CThoiGian& time)
{
os << time.hours << " " << time.minutes << " " << time.seconds;
return os;
}
};
int main() {
CThoiGian t1(1, 30, 45);
CThoiGian t2(0, 45, 30);
CThoiGian t3 = t1 + t2;
cout << "t1 + t2 = " << t3 << endl; // 2:16:15
CThoiGian t4 = t1 - t2;
cout << "t1 - t2 = " << t4 << endl; // 0:45:15
++t1;
cout << "++t1 = " << t1 << endl; // 1:30:46
--t2;
cout << "--t2 = " << t2 << endl; // 0:45:29
cout << "t1 >= t2: " << (t1 >= t2) << endl; // 1
cout << "t1 != t2: " << (t1 != t2) << endl; // 1
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIENUaG9pR2lhbgp7CnByaXZhdGU6CiAgICBpbnQgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHM7CnB1YmxpYzoKICAgIENUaG9pR2lhbihpbnQgaCA9IDAsIGludCBtID0gMCwgaW50IHMgPSAwKSA6IGhvdXJzKGgpLCBtaW51dGVzKG0pLCBzZWNvbmRzKHMpIHt9CiAgICBib29sIG9wZXJhdG9yPj0oY29uc3QgQ1Rob2lHaWFuJiB0aW1lKQogICAgewogICAgICAgIGlmIChob3VycyA+IHRpbWUuaG91cnMpIHJldHVybiB0cnVlOwogICAgICAgIGlmIChob3VycyA9PSB0aW1lLmhvdXJzICYmIG1pbnV0ZXMgPiB0aW1lLm1pbnV0ZXMpIHJldHVybiB0cnVlOwogICAgICAgIGlmIChob3VycyA9PSB0aW1lLmhvdXJzICYmIG1pbnV0ZXMgPT0gdGltZS5taW51dGVzICYmIHNlY29uZHMgPj0gdGltZS5zZWNvbmRzKSByZXR1cm4gdHJ1ZTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ1Rob2lHaWFuJiB0aW1lKQogICAgewogICAgICAgIHJldHVybiBob3VycyAhPSB0aW1lLmhvdXJzIHx8IG1pbnV0ZXMgIT0gdGltZS5taW51dGVzIHx8IHNlY29uZHMgIT0gdGltZS5zZWNvbmRzOwogICAgfQogICAgQ1Rob2lHaWFuIG9wZXJhdG9yKyhjb25zdCBDVGhvaUdpYW4mIHRpbWUpCiAgICB7CiAgICAgICAgQ1Rob2lHaWFuIHJlczsKICAgICAgICByZXMuc2Vjb25kcyA9IHNlY29uZHMgKyB0aW1lLnNlY29uZHM7CiAgICAgICAgcmVzLm1pbnV0ZXMgPSBtaW51dGVzICsgdGltZS5taW51dGVzICsgcmVzLnNlY29uZHMgLyA2MDsKICAgICAgICByZXMuc2Vjb25kcyAlPSA2MDsKICAgICAgICByZXMuaG91cnMgPSBob3VycyArIHRpbWUuaG91cnMgKyByZXMubWludXRlcyAvIDYwOwogICAgICAgIHJlcy5taW51dGVzICU9IDYwOwogICAgICAgIHJldHVybiByZXM7CiAgICB9CiAgICBDVGhvaUdpYW4gb3BlcmF0b3ItKENUaG9pR2lhbiB0aW1lKQogICAgewogICAgICAgIENUaG9pR2lhbiByZXM7CiAgICAgICAgcmVzLnNlY29uZHMgPSBzZWNvbmRzIC0gdGltZS5zZWNvbmRzOwogICAgICAgIGlmIChyZXMuc2Vjb25kcyA8IDApCiAgICAgICAgewogICAgICAgICAgICByZXMuc2Vjb25kcyArPSA2MDsKICAgICAgICAgICAgdGltZS5taW51dGVzKys7CiAgICAgICAgfQogICAgICAgIHJlcy5taW51dGVzID0gbWludXRlcyAtIHRpbWUubWludXRlczsKICAgICAgICBpZiAocmVzLm1pbnV0ZXMgPCAwKQogICAgICAgIHsKICAgICAgICAgICAgcmVzLm1pbnV0ZXMgKz0gNjA7CiAgICAgICAgICAgIHRpbWUuaG91cnMrKzsKICAgICAgICB9CiAgICAgICAgcmVzLmhvdXJzID0gaG91cnMgLSB0aW1lLmhvdXJzOwogICAgICAgIHJldHVybiByZXM7CiAgICB9CiAgICBDVGhvaUdpYW4mIG9wZXJhdG9yKysoKQogICAgewogICAgICAgIHNlY29uZHMrKzsKICAgICAgICBpZiAoc2Vjb25kcyA9PSA2MCkKICAgICAgICB7CiAgICAgICAgICAgIHNlY29uZHMgPSAwOwogICAgICAgICAgICBtaW51dGVzKys7CiAgICAgICAgICAgIGlmIChtaW51dGVzID09IDYwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBtaW51dGVzID0gMDsKICAgICAgICAgICAgICAgIGhvdXJzKys7CiAgICAgICAgICAgICAgICBpZiAoaG91cnMgPT0gMjQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaG91cnMgPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KICAgIENUaG9pR2lhbiYgb3BlcmF0b3ItLSgpCiAgICB7CiAgICAgICAgc2Vjb25kcy0tOwogICAgICAgIGlmIChzZWNvbmRzID09IC0xKQogICAgICAgIHsKICAgICAgICAgICAgc2Vjb25kcyA9IDU5OwogICAgICAgICAgICBtaW51dGVzLS07CiAgICAgICAgICAgIGlmIChtaW51dGVzID09IC0xKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBtaW51dGVzID0gNTk7CiAgICAgICAgICAgICAgICBob3Vycy0tOwogICAgICAgICAgICAgICAgaWYgKGhvdXJzID09IC0xKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGhvdXJzID0gMjM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQogICAgZnJpZW5kIGlzdHJlYW0mIG9wZXJhdG9yPj4oaXN0cmVhbSYgaXMsIENUaG9pR2lhbiYgdGltZSkKICAgIHsKICAgICAgICBpcyA+PiB0aW1lLmhvdXJzID4+IHRpbWUubWludXRlcyA+PiB0aW1lLnNlY29uZHM7CiAgICAgICAgcmV0dXJuIGlzOwogICAgfQogICAgZnJpZW5kIG9zdHJlYW0mIG9wZXJhdG9yPDwob3N0cmVhbSYgb3MsIGNvbnN0IENUaG9pR2lhbiYgdGltZSkKICAgIHsKICAgICAgICBvcyA8PCB0aW1lLmhvdXJzIDw8ICIgIiA8PCB0aW1lLm1pbnV0ZXMgPDwgIiAiIDw8IHRpbWUuc2Vjb25kczsKICAgICAgICByZXR1cm4gb3M7CiAgICB9Cn07CgppbnQgbWFpbigpIHsKICAgIENUaG9pR2lhbiB0MSgxLCAzMCwgNDUpOwogICAgQ1Rob2lHaWFuIHQyKDAsIDQ1LCAzMCk7CgogICAgQ1Rob2lHaWFuIHQzID0gdDEgKyB0MjsKICAgIGNvdXQgPDwgInQxICsgdDIgPSAiIDw8IHQzIDw8IGVuZGw7IC8vIDI6MTY6MTUKCiAgICBDVGhvaUdpYW4gdDQgPSB0MSAtIHQyOwogICAgY291dCA8PCAidDEgLSB0MiA9ICIgPDwgdDQgPDwgZW5kbDsgLy8gMDo0NToxNQoKICAgICsrdDE7CiAgICBjb3V0IDw8ICIrK3QxID0gIiA8PCB0MSA8PCBlbmRsOyAvLyAxOjMwOjQ2CgogICAgLS10MjsKICAgIGNvdXQgPDwgIi0tdDIgPSAiIDw8IHQyIDw8IGVuZGw7IC8vIDA6NDU6MjkKCiAgICBjb3V0IDw8ICJ0MSA+PSB0MjogIiA8PCAodDEgPj0gdDIpIDw8IGVuZGw7IC8vIDEKICAgIGNvdXQgPDwgInQxICE9IHQyOiAiIDw8ICh0MSAhPSB0MikgPDwgZW5kbDsgLy8gMQoKICAgIHJldHVybiAwOwp9