void increment_datetime(char* stamp) { char limit, roll; (void)(stamp[13] < '9' ? ++stamp[13] : (stamp[13] = '0', stamp[12] < '5' ? ++stamp[12] : (stamp[12] = '0', stamp[11] < '9' ? ++stamp[11] : (stamp[11] = '0', stamp[10] < '5' ? ++stamp[10] : (stamp[10] = '0', stamp[ 9] < ((stamp[8] == '2') ? '3':'9') ? ++stamp[ 9] : (stamp[ 9] = '0', stamp[ 8] < '2' ? ++stamp[ 8] : (stamp[ 8] = '0', limit = "0181010110101"[(stamp[4] * 10 + stamp[5]) & 0xf], roll = (stamp[6] == '3' - (limit == '8')), stamp[ 7] < '9' && (stamp[7] != limit || !roll || (limit == '8' && !(((stamp[2] << 1) ^ stamp[3]) & 3) && ((stamp[2] | stamp[3]) != '0' || !(((stamp[0] << 1) ^ stamp[1]) & 3)))) ? ++stamp[ 7] : (stamp[ 7] = '0' + roll, !roll ? ++stamp[ 6] : (stamp[ 6] = '0', stamp[ 5] < ((stamp[4] == '1') ? '2':'9') ? ++stamp[ 5] : (stamp[ 5] = '0' + (stamp[4] == '1'), stamp[ 4] < '1' ? ++stamp[ 4] : (stamp[ 4] = '0', stamp[ 3] < '9' ? ++stamp[ 3] : (stamp[ 3] = '0', stamp[ 2] < '9' ? ++stamp[ 2] : (stamp[ 2] = '0', stamp[ 1] < '9' ? ++stamp[ 1] : (stamp[ 1] = '0', stamp[ 0] < '9' ? ++stamp[ 0] : (stamp[ 0] = '0'))))))))))))))); } #include #include int main() { char stamp[20]; while (cin.getline(stamp, sizeof(stamp))) { increment_datetime(stamp); std::cout << stamp << std::endl; } return 0; }