Official

C - Ideal Holidays Editorial by nok0


はじめに、一週間の何日目かが重要なので、\(D_i\)\(A+B\) で割ったあまりで置き換えておきます。

この操作によって得られた \(D\) を、重複を除いて昇順にソートします。このようにして得られた列を \(E=(E_1,E_2,\ldots,E_k)\) とします。

このとき、本問題の答えが Yes となることは、以下の条件と同値です。

  • ある \(i\ (1\leq i \leq k)\) が存在して、\((E_{i+1}-E_i) \bmod (A+B) > B\) を満たす。ただし\(E_{k+1}\)\(E_1\) を意味する。

証明は、ある \(i\) について \(E_i\)\(1\) 週間の \(A\) 日目(休日の最終日)であると仮定しても問題ないことから従います。(そうでない場合で条件を満たす場合、\(E_i\) を休日の最終日としても条件を満たすため)

以上の処理は \(\mathrm{O}(N\log N)\) で行えます。

posted:
last update: