Official

B - マラソン大会 / Marathon Editorial by sounansya


\(D_1+D_2+\ldots+D_{i-1} < T_i \times V\) を満たす \(i\) を列挙する問題です。

この \(D\) の総和は累積和 \(\displaystyle R_i=\sum_{j=1}^i D_j\) を事前に計算しておくことで \(R_{i-1} < T_i \times V\) となり、高速に判定することができます。

\(R_{i-1} < T_i \times V\) の判定は \(R,T,V\) の値が全て大きいため注意が必要です。Python ではオーバーフローを気にする必要はないですが、C++ で int 型や long long 型を用いるとオーバーフローしてしまします。このため、 128bit整数型や多倍長整数型を使用する必要があります。 \(\displaystyle \frac{R_{i-1}}{T_i} < V\) のように式変形して double 型で判定しても正答となります。

posted:
last update: