SRM514の練習会にだいぶ昔に参加しました。

結果はeasyだけ通すだけでした。medは考え方がほとんど合ってたし惜しい。

問題

TopCoder Statistics - Problem Statement

解法

時計の時刻を順番に全探索して条件にあるのがあったらそれを返す。

string tost(int h, int m) {
    string ret;
    if (h < 10) ret += "0";
    ret += to_string(h);
    ret += ":";
    if (m < 10) ret += "0";
    ret += to_string(m);
    return ret;
}

class RotatedClock {
public:
    string getEarliest(int hourHand, int minuteHand) {
        for (int i = 0; i < 12; i++) {
            for (int j = 0; j < 60; j += 2) {
                int hh = 30*i+j/2;
                int mh = 6*j;
                for (int k = 0; k < 12; k++) {
                    int nhh = (hh+360-k*30) % 360;
                    int nmh = (mh+360-k*30) % 360;
                    if (nhh == hourHand && nmh == minuteHand) {
                        return tost(i, j);
                    }
                }
            }
        }
        return "";
    }
};