f(x):=x日目を終えた時点での最小金額 とするとき、
f(x)=min⎩⎨⎧f(x−1)+1日間同じ店で購入する場合の最小金額f(x−2)+2日間同じ店で購入する場合の最小金額...f(0)+x日間同じ店で購入する場合の最小金額
となっている。上から順に、つまりk=1,2,...,xという順にk日間同じ店で購入する場合の最小金額を求めていくのは、ひとつ前の情報を利用すればO(N)で可能なので、全体の計算量はO(ND2)になる。
この方針だと割り算を排除しないと通らなかった。実際のループ回数は2×108くらい?
もっとましな方法があるらしいのであとで確認する。というか、2008年当時なら通ってなさそう。