mayoko’s diary

プロコンとかいろいろ。

SRM 598 div2 hard: FoxAndFencingEasy

解法
  • mov1 >= abs(d) なら, 一回で Ciel さんが Liss さんに追いつけるので, Ciel の勝ち
  • そうでない場合,
    • mov1 > 2*mov2 なら, 最初に近づいた時, mov2 以内に近づかないでかつ次に相手がどう動こうと mov1 以内に Liss を捉えることができるので, Ciel の勝ち
    • mov2 > mov1*2 なら同様の理由で Liss の勝ち
    • 他の場合は睨み合いになるので引き分け
class FoxAndFencingEasy {
public:
    string WhoCanWin(int mov1, int mov2, int d) {
        if (abs(d) <= mov1) return "Ciel";
        if (mov2 > 2*mov1) return "Liss";
        if (mov1 > 2*mov2) return "Ciel";
        return "Draw";
    }
};